dexter submitted this change.

View Change

Approvals: dexter: Looks good to me, approved Jenkins Builder: Verified laforge: Looks good to me, but someone else must approve
esipa_asn1_handler: use eimTransactionId in EimPackageResultResponseError

EimPackageResultResponseError contains an eimTransactionId, let's use this
eimTransactionId and add a dedicated handler function for the
EimPackageResultResponseError to esipa_asn1_handler_utils

Change-Id: Iadd852a7531f180618cf12b314170ceea3f97615
Related: SYS#8100
---
M src/esipa_asn1_handler.erl
M src/esipa_asn1_handler_utils.erl
2 files changed, 17 insertions(+), 6 deletions(-)

diff --git a/src/esipa_asn1_handler.erl b/src/esipa_asn1_handler.erl
index 867a326..e3a6abf 100644
--- a/src/esipa_asn1_handler.erl
+++ b/src/esipa_asn1_handler.erl
@@ -396,11 +396,9 @@
% not support.
throw("unsuppported message type \"profileDownloadTriggerResult\"");
{eimPackageResultResponseError, EimPackageResultResponseError} ->
- EimPackageResultErrorCode = maps:get(
- eimPackageResultErrorCode, EimPackageResultResponseError
- ),
- Outcome = [{[{eimPackageError, EimPackageResultErrorCode}]}],
- ok = mnesia_db_work:finish(Pid, Outcome, EsipaReq)
+ ok = esipa_asn1_handler_utils:handle_eimPackageResultResponseError(
+ Pid, EimPackageResultResponseError, EsipaReq
+ )
end,
{provideEimPackageResultResponse, {emptyResponse, #{}}};
%Unsupported request
diff --git a/src/esipa_asn1_handler_utils.erl b/src/esipa_asn1_handler_utils.erl
index 9db1f41..d7927cb 100644
--- a/src/esipa_asn1_handler_utils.erl
+++ b/src/esipa_asn1_handler_utils.erl
@@ -6,7 +6,11 @@

-module(esipa_asn1_handler_utils).

--export([handle_euiccPackageResult/3, handle_ipaEuiccDataResponse/3]).
+-export([
+ handle_euiccPackageResult/3,
+ handle_ipaEuiccDataResponse/3,
+ handle_eimPackageResultResponseError/3
+]).

eimTransactionId_from_euiccPackageResult(EuiccPackageResult) ->
case EuiccPackageResult of
@@ -123,3 +127,12 @@

Outcome = esipa_rest_utils:ipaEuiccDataResponse_to_outcome(IpaEuiccDataResponse),
mnesia_db_work:finish(Pid, Outcome, Debuginfo).
+
+% Handle an EimPackageResultResponseError, this includes handling of the work items in mnesia_db and the generation of
+% an appropriate REST outcome for the REST API.
+handle_eimPackageResultResponseError(Pid, EimPackageResultResponseError, Debuginfo) ->
+ EimTransactionId = maps:get(eimTransactionId, EimPackageResultResponseError),
+ {_, _, _} = mnesia_db_work:pickup(Pid, EimTransactionId),
+ EimPackageResultErrorCode = maps:get(eimPackageResultErrorCode, EimPackageResultResponseError),
+ Outcome = [{[{eimPackageError, EimPackageResultErrorCode}]}],
+ mnesia_db_work:finish(Pid, Outcome, Debuginfo).

To view, visit change 42952. To unsubscribe, or for help writing mail filters, visit settings.

Gerrit-MessageType: merged
Gerrit-Project: onomondo-eim
Gerrit-Branch: master
Gerrit-Change-Id: Iadd852a7531f180618cf12b314170ceea3f97615
Gerrit-Change-Number: 42952
Gerrit-PatchSet: 13
Gerrit-Owner: dexter <pmaier@sysmocom.de>
Gerrit-Reviewer: Jenkins Builder
Gerrit-Reviewer: dexter <pmaier@sysmocom.de>
Gerrit-Reviewer: laforge <laforge@osmocom.org>