diff options
author | Ahila <ahila.pandaram@wipro.com> | 2021-02-25 15:49:47 +0530 |
---|---|---|
committer | KAPIL SINGAL <ks220y@att.com> | 2021-03-09 15:22:10 +0000 |
commit | 2b91b0229dce35744d0604fdd129d4adff3637aa (patch) | |
tree | 8849b48b0174b9d48d202da635826cec60bc67f0 /platform-logic/ran-slice-api/src/main/xml/ran-slice-api_activateRANSliceInstance.xml | |
parent | 6c1df983ee0e29a10bfe94c761fb2fb0af2c28b3 (diff) |
DG Implementation - RAN Slice RPCS
instantiateRANSlice-ModifyDeallocate
terminateRANSlice
activateRANSlice
deactivateRANSlice
Other Fixes
Issue-ID: CCSDK-3191
Signed-off-by: Ahila <ahila.pandaram@wipro.com>
Change-Id: Id970af03ce509daedf1f2eab62aef71394fe9fea
Diffstat (limited to 'platform-logic/ran-slice-api/src/main/xml/ran-slice-api_activateRANSliceInstance.xml')
-rw-r--r-- | platform-logic/ran-slice-api/src/main/xml/ran-slice-api_activateRANSliceInstance.xml | 827 |
1 files changed, 824 insertions, 3 deletions
diff --git a/platform-logic/ran-slice-api/src/main/xml/ran-slice-api_activateRANSliceInstance.xml b/platform-logic/ran-slice-api/src/main/xml/ran-slice-api_activateRANSliceInstance.xml index 1cf36bcf..f2af89f8 100644 --- a/platform-logic/ran-slice-api/src/main/xml/ran-slice-api_activateRANSliceInstance.xml +++ b/platform-logic/ran-slice-api/src/main/xml/ran-slice-api_activateRANSliceInstance.xml @@ -4,15 +4,836 @@ <method rpc='activateRANSliceInstance' mode='sync'> <block atomic='true'> <record plugin="org.onap.ccsdk.sli.core.sli.recording.FileRecorder"> - <parameter name="file" value="/opt/opendaylight/current/data/log/configureNearRTRIC.log" /> + <parameter name="file" value="/opt/opendaylight/current/data/log/activateRANSlice.log" /> <parameter name="level" value="info" /> - <parameter name="field1" value="RPC to handle configureNearRTRIC "/> + <parameter name="field1" value="RPC to handle terminateRANSlice.: "/> + <parameter name="field2" value="`$activate-r-a-n-slice-input.action`"/> + <parameter name="field3" value="`$activate-r-a-n-slice-input.common-header.timestamp`"/> + <parameter name="field4" value="`$activate-r-a-n-slice-input.common-header.request-id`"/> + <parameter name="field5" value="`$activate-r-a-n-slice-input.common-header.originator-id`"/> + <parameter name="field6" value="RPC Payload String "/> + <parameter name="field7" value="`$activate-r-a-n-slice-input.payload`"/> </record> + <set> + <parameter name='error-code' value='200' /> + <parameter name='error-message' value='Successful execution of terminateRANSice RPC' /> + </set> + <execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliPluginUtils' method='jsonStringToCtx'> + <parameter name='source' value='activate-r-a-n-slice-input.payload' /> + <parameter name='outputPath' value='payloadJson' /> + <parameter name='isEscaped' value='false' /> + <outcome value='success'> + <block atomic='true'> + <execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliPluginUtils' method='printContext' > + <parameter name='filename' value='/opt/opendaylight/current/data/log/ranSlice-terminateRANSlice-context.log' /> + </execute> + <record plugin="org.onap.ccsdk.sli.core.sli.recording.FileRecorder"> + <parameter name="file" value="/opt/opendaylight/current/data/log/activateRANSlice.log" /> + <parameter name="level" value="info" /> + <parameter name="field1" value="Payload for terminateRANSlice.: "/> + <parameter name="field2" value="`$tmp.sNSSAI`"/> + <parameter name="field3" value="`$payloadJson.input.RANNFNSSIId`"/> + <parameter name="field4" value="`$payloadJson.input.callbackURL`"/> + <parameter name="field5" value="`$payloadJson.input.sliceProfileId`"/> + </record> + </block> + </outcome> + </execute> + <execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliPluginUtils' method='getAttributeValue'> + <parameter name='outputPath' value='tmp.sNSSAI' /> + <parameter name='source' value="`$payloadJson.input.NSSAI`" /> + </execute> + <execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliPluginUtils' method='printContext' > + <parameter name='filename' value='/opt/opendaylight/current/data/log/ranSlice-terminateRANSlice-context.log' /> + </execute> + <execute plugin='org.onap.ccsdk.sli.plugins.prop.PropertiesNode' method='readProperties' > + <parameter name='fileName' value='/opt/onap/ccsdk/data/properties/ran-slice-api-dg.properties' /> + <parameter name='contextPrefix' value='prop' /> + </execute> + <record plugin="org.onap.ccsdk.sli.core.sli.recording.FileRecorder"> + <parameter name="file" value="/opt/opendaylight/current/data/log/activateRANSlice.log" /> + <parameter name="level" value="info" /> + <parameter name="field1" value="Properties read .. controller details "/> + <parameter name="field2" value="`$prop.controller.user`"/> + <parameter name="field3" value="`$prop.controller.pwd`"/> + <parameter name="field4" value="`$prop.controller.url`"/> + <parameter name="field5" value="ransim-mounted (true/false): "/> + <parameter name="field6" value="`$prop.ransim-mounted`"/> + <parameter name="field7" value="config DB deployed (true/false): "/> + <parameter name="field8" value="`$prop.configdb-deployed`"/> + </record> + <set> + <parameter name='tmp.status' value='ACTIVE' /> + </set> + <execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliStringUtils' method='replace' > + <parameter name="source" value="`$prop.restapi.configdb.getNearRTRICByNSSI`"/> + <parameter name="outputPath" value="tmp.configdb.getNearRTRICByNSSI.url"/> + <parameter name="target" value="{ranNFNSSIId}"/> + <parameter name="replacement" value="`$payloadJson.input.RANNFNSSIId`"/> + </execute> + <record plugin="org.onap.ccsdk.sli.core.sli.recording.FileRecorder"> + <parameter name="file" value="/opt/opendaylight/current/data/log/activateRANSlice.log" /> + <parameter name="level" value="info" /> + <parameter name="field1" value="URL for configDB to Get NearRTRIC for RANNFNSSI"/> + <parameter name='field2' value="`$prop.configdb.url + $tmp.configdb.getNearRTRICByNSSI.url`" /> + <parameter name='field3' value="`$ranNFNSSIId`" /> + </record> + <execute plugin='org.onap.ccsdk.sli.plugins.restapicall.RestapiCallNode' method='sendRequest' > + <parameter name="restapiUrl" value="`$prop.configdb.url + $tmp.configdb.getNearRTRICByNSSI.url`"/> + <parameter name="httpMethod" value="GET"/> + <parameter name="responsePrefix" value="getNFNSSIRIC-configdb-response"/> + <parameter name='contentType' value='application/json' /> + <parameter name='format' value='json' /> + <parameter name='accept' value='application/json' /> + <parameter name="convertResponse" value="true"/> + <outcome value='failure'> + <block> + <set> + <parameter name='error-code' value='500'/> + <parameter name='error-message' value='Error Getting Info from ConfigDB. Aborting RPC executiopn'/> + </set> + <block atomic='true'> + <set> + <parameter name="tmp.so.callbackURL" value="`$payloadJson.input.callbackURL`"/> + <parameter name="tmp.status" value="`$error-code`"/> + <parameter name="tmp.reason" value="`$error-message`"/> + <parameter name="tmp.requestID" value="`$instantiateRANSlice-input.common-header.request-id`"/> + <parameter name="tmp.action" value="`$instantiateRANSlice-input.action`"/> + </set> + <record plugin="org.onap.ccsdk.sli.core.sli.recording.FileRecorder"> + <parameter name="file" value="/opt/opendaylight/current/data/log/so-callback-response.log" /> + <parameter name="level" value="info" /> + <parameter name="field1" value="URL for SO Callback Response"/> + <parameter name='field2' value="`$tmp.so.callbackURL`" /> + <parameter name='field3' value="`$tmp.status`" /> + <parameter name='field4' value="`$tmp.reason`" /> + <parameter name='field5' value="`$tmp.requestID`" /> + <parameter name='field6' value="`$tmp.action`" /> + </record> + <execute plugin='org.onap.ccsdk.sli.plugins.restapicall.RestapiCallNode' method='sendRequest' > + <parameter name="templateFileName" value="`$prop.restapi.templateDir + '/ranSlice-so-response.json'`" /> + <parameter name="restapiUrl" value="`$tmp.so.callbackURL`"/> + <parameter name="httpMethod" value="POST"/> + <parameter name="responsePrefix" value="so-callback-modify-response"/> + <parameter name='contentType' value='application/json' /> + <parameter name='format' value='json' /> + <parameter name='accept' value='application/json' /> + <parameter name="convertResponse" value="true"/> + <outcome value='failure'> + <block> + <return status='failure'> + <parameter name='ack-final' value='Y'/> + <parameter name="error-code" value="500" /> + <parameter name="error-message" value="Error sending SO Response" /> + </return> + </block> + </outcome> + <outcome value='success'> + <block> + <record plugin="org.onap.ccsdk.sli.core.sli.recording.FileRecorder"> + <parameter name="file" value="/opt/opendaylight/current/data/log/activateRANSlice.log" /> + <parameter name="level" value="info" /> + <parameter name="field1" value="SO Response Sent "/> + </record> + </block> + </outcome> + </execute> + </block> + </block> + </outcome> + <outcome value='success'> + <block atomic='true'> + <record plugin="org.onap.ccsdk.sli.core.sli.recording.FileRecorder"> + <parameter name="file" value="/opt/opendaylight/current/data/log/activateRANSlice.log" /> + <parameter name="level" value="info" /> + <parameter name="field1" value="Successfully Obtained NearRT RIC info from ConfigDB"/> + <parameter name="field2" value="`$getNFNSSIRIC-configdb-response._length`"/> + </record> + <execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliPluginUtils' method='printContext' > + <parameter name='filename' value='/opt/opendaylight/current/data/log/ranSlice-terminateRANSlice-configrsp-context.log' /> + </execute> + </block> + </outcome> + </execute> + <execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliStringUtils' method='replace' > + <parameter name="source" value="`$prop.restapi.configdb.getplmn`"/> + <parameter name="outputPath" value="tmp.configdb.getPLMNId.url"/> + <parameter name="target" value="{sliceProfileId}"/> + <parameter name="replacement" value="`$payloadJson.input.sliceProfileId`"/> + </execute> + <record plugin="org.onap.ccsdk.sli.core.sli.recording.FileRecorder"> + <parameter name="file" value="/opt/opendaylight/current/data/log/activateRANSlice.log" /> + <parameter name="level" value="info" /> + <parameter name="field1" value="Get PLMN from SliceProfileId URL: "/> + <parameter name="field2" value="`$tmp.configdb.getPLMNId.url`"/> + </record> + <execute plugin='org.onap.ccsdk.sli.plugins.restapicall.RestapiCallNode' method='sendRequest' > + <parameter name="restapiUrl" value="`$prop.configdb.url + $tmp.configdb.getPLMNId.url`"/> + <parameter name="httpMethod" value="GET"/> + <parameter name="responsePrefix" value="getPLMN-configdb-response"/> + <parameter name='contentType' value='application/json' /> + <parameter name='format' value='json' /> + <parameter name='accept' value='application/json' /> + <parameter name="convertResponse" value="true"/> + </execute> + <execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliPluginUtils' method='getAttributeValue'> + <parameter name='outputPath' value='tmp.pLMNId' /> + <parameter name='source' value="`getPLMN-configdb-response.pLMNId`" /> + </execute> + <execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliStringUtils' method='substring'> + <parameter name="string" value="`$tmp.pLMNId`" /> + <parameter name="result" value="tmp.mcc"/> + <parameter name="begin-index" value="0" /> + <parameter name="end-index" value="3" /> + </execute> + <execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliStringUtils' method='substring'> + <parameter name="string" value="`$tmp.pLMNId`" /> + <parameter name="result" value="tmp.mnc"/> + <parameter name="begin-index" value="4" /> + </execute> + <record plugin="org.onap.ccsdk.sli.core.sli.recording.FileRecorder"> + <parameter name="file" value="/opt/opendaylight/current/data/log/activateRANSlice.log" /> + <parameter name="level" value="info" /> + <parameter name="field1" value="`$tmp.pLMNId`"/> + <parameter name="field2" value="`$tmp.mcc`"/> + <parameter name="field3" value="`$tmp.mnc`"/> + </record> + <for index='idy' start='0' end='`$getNFNSSIRIC-configdb-response._length`' > + <block atomic='true'> + <execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliPluginUtils' method='getAttributeValue'> + <parameter name='outputPath' value='tmp.CUCPList_length' /> + <parameter name='source' value="`'getNFNSSIRIC-configdb-response.[' + $idy +'].gNBCUCPList_length'`" /> + </execute> + <record plugin="org.onap.ccsdk.sli.core.sli.recording.FileRecorder"> + <parameter name="file" value="/opt/opendaylight/current/data/log/instantiateRANSliceModifyAllocate.log" /> + <parameter name="level" value="info" /> + <parameter name="field1" value="Number of CUCP List Entries "/> + <parameter name="field2" value="`$tmp.CUCPList_length`"/> + <parameter name="field3" value="for the NearRTRIC"/> + <parameter name="field4" value="`$tmp.nearRTRICId`"/> + </record> + <for index='idz' start='0' end='`$tmp.CUCPList_length`'> + <block atomic='true'> + <execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliPluginUtils' method='getAttributeValue'> + <parameter name='outputPath' value='tmp.CUCPName' /> + <parameter name='source' value="`'getNFNSSIRIC-configdb-response.['+ $idy +'].gNBCUCPList['+ $idz +'].gNBCUName'`" /> + </execute> + <record plugin="org.onap.ccsdk.sli.core.sli.recording.FileRecorder"> + <parameter name="file" value="/opt/opendaylight/current/data/log/instantiateRANSliceModifyAllocate.log" /> + <parameter name="level" value="info" /> + <parameter name="field1" value="CUCPName "/> + <parameter name="field2" value="`$tmp.CUCPName`"/> + </record> + <execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliPluginUtils' method='getAttributeValue'> + <parameter name='outputPath' value='tmp.cellCUList_length' /> + <parameter name='source' value="`'getNFNSSIRIC-configdb-response.[' + $idy +'].gNBCUCPList[' + $idz +'].cellCUList_length'`" /> + </execute> + <for index='idcu' start='0' end='`$tmp.cellCUList_length`' > + <block atomic='true'> + <execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliPluginUtils' method='getAttributeValue'> + <parameter name='outputPath' value='tmp.pLMNInfoList_length' /> + <parameter name='source' value="`'getNFNSSIRIC-configdb-response.['+ $idy +'].gNBCUCPList['+ $idz +'].cellCUList['+ $idcu +'].pLMNInfoList_length '`" /> + </execute> + <for index='id-cuplmn' start='0' end='`$tmp.pLMNInfoList_length`' > + <block atomic='true'> + <execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliPluginUtils' method='getAttributeValue'> + <parameter name='outputPath' value='tmp.configDBSNSSAI' /> + <parameter name='source' value="`'getNFNSSIRIC-configdb-response.['+ $idy +'].gNBCUCPList['+ $idz +'].cellCUList['+ $idcu +'].pLMNInfoList['+ $id-cuplmn +'].sNSSAI.sNSSAI'`" /> + </execute> + <record plugin="org.onap.ccsdk.sli.core.sli.recording.FileRecorder"> + <parameter name="file" value="/opt/opendaylight/current/data/log/instantiateRANSliceModifyAllocate.log" /> + <parameter name="level" value="info" /> + <parameter name="field1" value="sNSSAI - getNFNSSIRIC-configdb-response"/> + <parameter name="field2" value="`$tmp.configDBSNSSAI`"/> + <parameter name="field3" value="sNSSAI from request"/> + <parameter name="field4" value="`$tmp.sNSSAI`"/> + </record> + <switch test='`$tmp.configDBSNSSAI == $tmp.sNSSAI`'> + <outcome value='true'> + <block atomic='true'> + <record plugin="org.onap.ccsdk.sli.core.sli.recording.FileRecorder"> + <parameter name="file" value="/opt/opendaylight/current/data/log/instantiateRANSliceModifyAllocate.log" /> + <parameter name="level" value="info" /> + <parameter name="field1" value="CellCU is applicable for the NSSAI "/> + </record> + <switch test='`$prop.ransim-mounted`'> + <outcome value='false'> + <execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliStringUtils' method='replace' > + <parameter name="source" value="`$prop.restapi.patchPLMNInfoListEntry.ToNRCellCU`"/> + <parameter name="outputPath" value="tmp.patchPLMNInfoListEntry.url"/> + <parameter name="target" value="{idNearRTRIC}"/> + <parameter name="replacement" value="`$tmp.nearRTRICId`"/> + </execute> + </outcome> + <outcome value='true'> + <block atomic='true'> + <execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliStringUtils' method='replace' > + <parameter name="source" value="`$prop.restapi.patchPLMNInfoListEntry.ToNRCellCU.ransim-mounted`"/> + <parameter name="outputPath" value="tmp.patchPLMNInfoListEntry.url"/> + <parameter name="target" value="{idNearRTRIC}"/> + <parameter name="replacement" value="`$tmp.nearRTRICId`"/> + </execute> + <execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliStringUtils' method='replace' > + <parameter name="source" value="`$tmp.patchPLMNInfoListEntry.url`"/> + <parameter name="outputPath" value="tmp.patchPLMNInfoListEntry.url"/> + <parameter name="target" value="{mountName}"/> + <parameter name="replacement" value="`$tmp.CUCPName`"/> + </execute> + </block> + </outcome> + </switch> + <execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliPluginUtils' method='getAttributeValue'> + <parameter name='outputPath' value='tmp.cellCULocalId' /> + <parameter name='source' value="`'getNFNSSIRIC-configdb-response.['+ $idy +'].gNBCUCPList['+ $idz +'].cellCUList['+ $idcu +'].cellLocalId'`" /> + </execute> + <execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliStringUtils' method='replace' > + <parameter name="source" value="`$tmp.patchPLMNInfoListEntry.url`"/> + <parameter name="outputPath" value="tmp.patchPLMNInfoListEntry.url"/> + <parameter name="target" value="{idGNBCUCPFunction}"/> + <parameter name="replacement" value="`$tmp.CUCPName`"/> + </execute> + <execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliStringUtils' method='replace' > + <parameter name="source" value="`$tmp.patchPLMNInfoListEntry.url`"/> + <parameter name="outputPath" value="tmp.patchPLMNInfoListEntry.url"/> + <parameter name="target" value="{idNRCellCU}"/> + <parameter name="replacement" value="`$tmp.cellCULocalId`"/> + </execute> + <execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliStringUtils' method='replace' > + <parameter name="source" value="`$tmp.patchPLMNInfoListEntry.url`"/> + <parameter name="outputPath" value="tmp.patchPLMNInfoListEntry.url"/> + <parameter name="target" value="{mcc}"/> + <parameter name="replacement" value="`$tmp.mcc`"/> + </execute> + <execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliStringUtils' method='replace' > + <parameter name="source" value="`$tmp.patchPLMNInfoListEntry.url`"/> + <parameter name="outputPath" value="tmp.patchPLMNInfoListEntry.url"/> + <parameter name="target" value="{mnc}"/> + <parameter name="replacement" value="`$tmp.mnc`"/> + </execute> + <record plugin="org.onap.ccsdk.sli.core.sli.recording.FileRecorder"> + <parameter name="file" value="/opt/opendaylight/current/data/log/activateRANSlice.log" /> + <parameter name="level" value="info" /> + <parameter name="field1" value="patch cellCU NSSAI parameters"/> + <parameter name="field2" value="`$tmp.nearRTRICId`"/> + <parameter name="field3" value="`$tmp.CUCPName`"/> + <parameter name="field4" value="`$tmp.cellCULocalId`"/> + <parameter name="field5" value="`$tmp.mcc`"/> + <parameter name="field6" value="`$tmp.mnc`"/> + <parameter name="field7" value="`$tmp.patchPLMNInfoListEntry.url`"/> + </record> + <execute plugin='org.onap.ccsdk.sli.plugins.restapicall.RestapiCallNode' method='sendRequest' > + <parameter name="templateFileName" value="`$prop.restapi.templateDir + '/ranSlice-patch-sNSSAI-status.json'`" /> + <parameter name="restapiUrl" value="`$prop.controller.url + $tmp.patchPLMNInfoListEntry.url`"/> + <parameter name="restapiUser" value="`$prop.controller.user`" /> + <parameter name="restapiPassword" value="`$prop.controller.pwd`"/> + <parameter name="httpMethod" value="PATCH"/> + <parameter name="responsePrefix" value="activate-cellCU-PLMNInfoList-response"/> + <parameter name='contentType' value='application/yang.patch+json' /> + <parameter name='accept' value='application/yang.patch-status+json'/> + <parameter name='format' value='json' /> + <outcome value='failure'> + <block atomic='true'> + <set> + <parameter name='error-code' value='500'/> + <parameter name='error-message' value='Error patching cellCU PLMNInfoList. Aborting RPC executiopn'/> + </set> + <return status='failure'> + <parameter name='ack-final' value='Y'/> + <parameter name='error-code' value='500'/> + <parameter name='error-message' value='Error updating NRcellCU - PLMNInfo. Aborting RPC executiopn'/> + </return> + <block atomic='true'> + <set> + <parameter name="tmp.so.callbackURL" value="`$payloadJson.input.callbackURL`"/> + <parameter name="tmp.status" value="`$error-code`"/> + <parameter name="tmp.reason" value="`$error-message`"/> + <parameter name="tmp.requestID" value="`$instantiateRANSlice-input.common-header.request-id`"/> + <parameter name="tmp.action" value="`$instantiateRANSlice-input.action`"/> + </set> + <record plugin="org.onap.ccsdk.sli.core.sli.recording.FileRecorder"> + <parameter name="file" value="/opt/opendaylight/current/data/log/so-callback-response.log" /> + <parameter name="level" value="info" /> + <parameter name="field1" value="URL for SO Callback Response"/> + <parameter name='field2' value="`$tmp.so.callbackURL`" /> + <parameter name='field3' value="`$tmp.status`" /> + <parameter name='field4' value="`$tmp.reason`" /> + <parameter name='field5' value="`$tmp.requestID`" /> + <parameter name='field6' value="`$tmp.action`" /> + </record> + <execute plugin='org.onap.ccsdk.sli.plugins.restapicall.RestapiCallNode' method='sendRequest' > + <parameter name="templateFileName" value="`$prop.restapi.templateDir + '/ranSlice-so-response.json'`" /> + <parameter name="restapiUrl" value="`$tmp.so.callbackURL`"/> + <parameter name="httpMethod" value="POST"/> + <parameter name="responsePrefix" value="so-callback-modify-response"/> + <parameter name='contentType' value='application/json' /> + <parameter name='format' value='json' /> + <parameter name='accept' value='application/json' /> + <parameter name="convertResponse" value="true"/> + <outcome value='failure'> + <block> + <return status='failure'> + <parameter name='ack-final' value='Y'/> + <parameter name="error-code" value="500" /> + <parameter name="error-message" value="Error sending SO Response" /> + </return> + </block> + </outcome> + <outcome value='success'> + <block> + <record plugin="org.onap.ccsdk.sli.core.sli.recording.FileRecorder"> + <parameter name="file" value="/opt/opendaylight/current/data/log/activateRANSlice.log" /> + <parameter name="level" value="info" /> + <parameter name="field1" value="SO Response Sent "/> + </record> + </block> + </outcome> + </execute> + </block> + </block> + </outcome> + <outcome value='success'> + <block atomic='true'> + <record plugin="org.onap.ccsdk.sli.core.sli.recording.FileRecorder"> + <parameter name="file" value="/opt/opendaylight/current/data/log/activateRANSlice.log" /> + <parameter name="level" value="info" /> + <parameter name="field1" value="Successfully Patched - cellCU PLMNInfo List"/> + </record> + </block> + </outcome> + </execute> + </block> + </outcome> + </switch> + </block> + </for> + </block> + </for> + </block> + </for> + </block> + <block atomic='true'> + <execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliPluginUtils' method='getAttributeValue'> + <parameter name='outputPath' value='tmp.CUUPList_length' /> + <parameter name='source' value="`'getNFNSSIRIC-configdb-response.[' + $idy +'].gNBCUUPList_length'`" /> + </execute> + <record plugin="org.onap.ccsdk.sli.core.sli.recording.FileRecorder"> + <parameter name="file" value="/opt/opendaylight/current/data/log/activateRANSlice.log" /> + <parameter name="level" value="info" /> + <parameter name="field1" value="Number of CUCP List Entries "/> + <parameter name="field2" value="`$tmp.CUUPList_length`"/> + <parameter name="field3" value="for the NearRTRIC"/> + <parameter name="field4" value="`$tmp.nearRTRICId`"/> + </record> + <for index='id-cuup' start='0' end='`$tmp.CUUPList_length`'> + <block atomic='true'> + <execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliPluginUtils' method='getAttributeValue'> + <parameter name='outputPath' value='tmp.idGNBCUUPFunction' /> + <parameter name='source' value="`'getNFNSSIRIC-configdb-response.['+ $idy +'].gNBCUUPList['+ $id-cuup +'].gNBCUUPId'`" /> + </execute> + <record plugin="org.onap.ccsdk.sli.core.sli.recording.FileRecorder"> + <parameter name="file" value="/opt/opendaylight/current/data/log/activateRANSlice.log" /> + <parameter name="level" value="info" /> + <parameter name="field1" value="idGNBCUUPFunction "/> + <parameter name="field2" value="`$tmp.idGNBCUUPFunction`"/> + </record> + <execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliPluginUtils' method='getAttributeValue'> + <parameter name='outputPath' value='tmp.pLMNInfoList' /> + <parameter name='source' value="`'getNFNSSIRIC-configdb-response.['+ $idy +'].gNBCUUPList['+ $id-cuup +'].pLMNInfoList_length'`" /> + </execute> + <for index='id-plmn' start='0' end='`$tmp.pLMNInfoList`'> + <block atomic='true'> + <switch test='`$prop.ransim-mounted`'> + <outcome value='false'> + <execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliStringUtils' method='replace' > + <parameter name="source" value="`$prop.restapi.patchPLMNInfoListEntry.ToGNBCUUP`"/> + <parameter name="outputPath" value="tmp.patchPLMNInfoList-CUUP.url"/> + <parameter name="target" value="{idNearRTRIC}"/> + <parameter name="replacement" value="`$tmp.nearRTRICId`"/> + </execute> + </outcome> + <outcome value='true'> + <block atomic='true'> + <execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliStringUtils' method='replace' > + <parameter name="source" value="`$prop.restapi.patchPLMNInfoListEntry.ToGNBCUUP.ransim-mounted`"/> + <parameter name="outputPath" value="tmp.patchPLMNInfoList-CUUP.url"/> + <parameter name="target" value="{idNearRTRIC}"/> + <parameter name="replacement" value="`$tmp.nearRTRICId`"/> + </execute> + <execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliStringUtils' method='replace' > + <parameter name="source" value="`$tmp.patchPLMNInfoList-CUUP.url`"/> + <parameter name="outputPath" value="tmp.patchPLMNInfoList-CUUP.url"/> + <parameter name="target" value="{mountName}"/> + <parameter name="replacement" value="`$tmp.idGNBCUUPFunction`"/> + </execute> + </block> + </outcome> + </switch> + <execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliStringUtils' method='replace' > + <parameter name="source" value="`$tmp.patchPLMNInfoList-CUUP.url`"/> + <parameter name="outputPath" value="tmp.patchPLMNInfoList-CUUP.url"/> + <parameter name="target" value="{idGNBCUUPFunction}"/> + <parameter name="replacement" value="`$tmp.idGNBCUUPFunction`"/> + </execute> + <execute plugin='org.onap.ccsdk.sli.plugins.restapicall.RestapiCallNode' method='sendRequest' > + <parameter name="templateFileName" value="`$prop.restapi.templateDir + '/ranSlice-patch-sNSSAI-status.json'`" /> + <parameter name="restapiUrl" value="`$prop.controller.url + $tmp.patchPLMNInfoList-CUUP.url`"/> + <parameter name="restapiUser" value="`$prop.controller.user`" /> + <parameter name="restapiPassword" value="`$prop.controller.pwd`"/> + <parameter name="httpMethod" value="PATCH"/> + <parameter name="responsePrefix" value="activate-gNBCUUP-PLMNInfoList-response"/> + <parameter name='contentType' value='application/yang.patch+json' /> + <parameter name='accept' value='application/yang.patch-status+json'/> + <parameter name='format' value='json' /> + <outcome value='failure'> + <block atomic='true'> + <set> + <parameter name='error-code' value='500'/> + <parameter name='error-message' value='Error patching CUUP PLMNInfoList. Aborting RPC executiopn'/> + </set> + <return status='failure'> + <parameter name='ack-final' value='Y'/> + <parameter name='error-code' value='500'/> + <parameter name='error-message' value='Error patching CUUP PLMNInfo. Aborting RPC executiopn'/> + </return> + <block atomic='true'> + <set> + <parameter name="tmp.so.callbackURL" value="`$payloadJson.input.callbackURL`"/> + <parameter name="tmp.status" value="`$error-code`"/> + <parameter name="tmp.reason" value="`$error-message`"/> + <parameter name="tmp.requestID" value="`$instantiateRANSlice-input.common-header.request-id`"/> + <parameter name="tmp.action" value="`$instantiateRANSlice-input.action`"/> + </set> + <record plugin="org.onap.ccsdk.sli.core.sli.recording.FileRecorder"> + <parameter name="file" value="/opt/opendaylight/current/data/log/so-callback-response.log" /> + <parameter name="level" value="info" /> + <parameter name="field1" value="URL for SO Callback Response"/> + <parameter name='field2' value="`$tmp.so.callbackURL`" /> + <parameter name='field3' value="`$tmp.status`" /> + <parameter name='field4' value="`$tmp.reason`" /> + <parameter name='field5' value="`$tmp.requestID`" /> + <parameter name='field6' value="`$tmp.action`" /> + </record> + <execute plugin='org.onap.ccsdk.sli.plugins.restapicall.RestapiCallNode' method='sendRequest' > + <parameter name="templateFileName" value="`$prop.restapi.templateDir + '/ranSlice-so-response.json'`" /> + <parameter name="restapiUrl" value="`$tmp.so.callbackURL`"/> + <parameter name="httpMethod" value="POST"/> + <parameter name="responsePrefix" value="so-callback-modify-response"/> + <parameter name='contentType' value='application/json' /> + <parameter name='format' value='json' /> + <parameter name='accept' value='application/json' /> + <parameter name="convertResponse" value="true"/> + <outcome value='failure'> + <block> + <return status='failure'> + <parameter name='ack-final' value='Y'/> + <parameter name="error-code" value="500" /> + <parameter name="error-message" value="Error sending SO Response" /> + </return> + </block> + </outcome> + <outcome value='success'> + <block> + <record plugin="org.onap.ccsdk.sli.core.sli.recording.FileRecorder"> + <parameter name="file" value="/opt/opendaylight/current/data/log/activateRANSlice.log" /> + <parameter name="level" value="info" /> + <parameter name="field1" value="SO Response Sent "/> + </record> + </block> + </outcome> + </execute> + </block> + </block> + </outcome> + <outcome value='success'> + <block atomic='true'> + <record plugin="org.onap.ccsdk.sli.core.sli.recording.FileRecorder"> + <parameter name="file" value="/opt/opendaylight/current/data/log/activateRANSlice.log" /> + <parameter name="level" value="info" /> + <parameter name="field1" value="Successfully Patched - gNBCUUP PLMNInfo List"/> + </record> + </block> + </outcome> + </execute> + </block> + </for> + </block> + </for> + </block> + <block atomic='true'> + <execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliPluginUtils' method='getAttributeValue'> + <parameter name='outputPath' value='tmp.DUList_length' /> + <parameter name='source' value="`'getNFNSSIRIC-configdb-response.[' + $idy +'].gNBDUList_length'`" /> + </execute> + <record plugin="org.onap.ccsdk.sli.core.sli.recording.FileRecorder"> + <parameter name="file" value="/opt/opendaylight/current/data/log/activateRANSlice.log" /> + <parameter name="level" value="info" /> + <parameter name="field1" value="Number of DU List Entries "/> + <parameter name="field2" value="`$tmp.DUList_length`"/> + <parameter name="field3" value="for the NearRTRIC"/> + <parameter name="field4" value="`$tmp.nearRTRICId`"/> + </record> + <for index='id-du' start='0' end='`$tmp.DUList_length`'> + <block atomic='true'> + <execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliPluginUtils' method='getAttributeValue'> + <parameter name='outputPath' value='tmp.GNBDUId' /> + <parameter name='source' value="`'getNFNSSIRIC-configdb-response.['+ $idy +'].gNBDUList['+ $id-du +'].gNBDUId'`" /> + </execute> + <record plugin="org.onap.ccsdk.sli.core.sli.recording.FileRecorder"> + <parameter name="file" value="/opt/opendaylight/current/data/log/activateRANSlice.log" /> + <parameter name="level" value="info" /> + <parameter name="field1" value="GNBDUId "/> + <parameter name="field2" value="`$tmp.GNBDUId`"/> + </record> + <execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliPluginUtils' method='getAttributeValue'> + <parameter name='outputPath' value='tmp.cellDUList_length' /> + <parameter name='source' value="`'getNFNSSIRIC-configdb-response.[' + $idy +'].gNBDUList[' + $id-du +'].cellDUList_length'`" /> + </execute> + <for index='id-celldu' start='0' end='`$tmp.cellDUList_length`' > + <block> + <execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliPluginUtils' method='getAttributeValue'> + <parameter name='outputPath' value='tmp.DUpLMNInfoList_length' /> + <parameter name='source' value="`'getNFNSSIRIC-configdb-response.['+ $idy +'].gNBDUList['+ $id-du +'].cellDUList['+ $id-celldu +'].pLMNInfoList_length '`" /> + </execute> + <for index='id-duplmn' start='0' end='`$tmp.DUpLMNInfoList_length`' > + <block atomic='true'> + <execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliPluginUtils' method='getAttributeValue'> + <parameter name='outputPath' value='tmp.configDBSNSSAI-DU' /> + <parameter name='source' value="`'getNFNSSIRIC-configdb-response.['+ $idy +'].gNBDUList['+ $id-du +'].cellDUList['+ $id-celldu +'].pLMNInfoList['+ $id-duplmn +'].sNSSAI.sNSSAI'`" /> + </execute> + <record plugin="org.onap.ccsdk.sli.core.sli.recording.FileRecorder"> + <parameter name="file" value="/opt/opendaylight/current/data/log/activateRANSlice.log" /> + <parameter name="level" value="info" /> + <parameter name="field1" value="sNSSAI - getNFNSSIRIC-configdb-response"/> + <parameter name="field2" value="`$tmp.configDBSNSSAI-DU`"/> + <parameter name="field3" value="sNSSAI from request"/> + <parameter name="field4" value="`$tmp.sNSSAI`"/> + </record> + <switch test='`$tmp.configDBSNSSAI-DU == $tmp.sNSSAI`'> + <outcome value='true'> + <block atomic='true'> + <record plugin="org.onap.ccsdk.sli.core.sli.recording.FileRecorder"> + <parameter name="file" value="/opt/opendaylight/current/data/log/activateRANSlice.log" /> + <parameter name="level" value="info" /> + <parameter name="field1" value="CellDU is applicable for the NSSAI "/> + </record> + <switch test='`$prop.ransim-mounted`'> + <outcome value='false'> + <execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliStringUtils' method='replace' > + <parameter name="source" value="`$prop.restapi.patchPLMNInfoListEntry.ToNRCellDU`"/> + <parameter name="outputPath" value="tmp.patchPLMNInfoListEntry-cellDU.url"/> + <parameter name="target" value="{idNearRTRIC}"/> + <parameter name="replacement" value="`$tmp.nearRTRICId`"/> + </execute> + </outcome> + <outcome value='true'> + <block atomic='true'> + <execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliStringUtils' method='replace' > + <parameter name="source" value="`$prop.restapi.patchPLMNInfoListEntry.ToNRCellDU.ransim-mounted`"/> + <parameter name="outputPath" value="tmp.patchPLMNInfoListEntry-cellDU.url"/> + <parameter name="target" value="{idNearRTRIC}"/> + <parameter name="replacement" value="`$tmp.nearRTRICId`"/> + </execute> + <execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliStringUtils' method='replace' > + <parameter name="source" value="`$tmp.patchPLMNInfoListEntry-cellDU.url`"/> + <parameter name="outputPath" value="tmp.patchPLMNInfoListEntry-cellDU.url"/> + <parameter name="target" value="{mountName}"/> + <parameter name="replacement" value="`$tmp.GNBDUId`"/> + </execute> + </block> + </outcome> + </switch> + <execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliPluginUtils' method='getAttributeValue'> + <parameter name='outputPath' value='tmp.cellDULocalId' /> + <parameter name='source' value="`'getNFNSSIRIC-configdb-response.['+ $idy +'].gNBDUList['+ $id-du +'].cellCUList['+ $id-celldu +'].cellLocalId'`" /> + </execute> + <execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliStringUtils' method='replace' > + <parameter name="source" value="`$tmp.patchPLMNInfoListEntry-cellDU.url`"/> + <parameter name="outputPath" value="tmp.patchPLMNInfoListEntry-cellDU.url"/> + <parameter name="target" value="{idGNBDUFunction}"/> + <parameter name="replacement" value="`$tmp.GNBDUId`"/> + </execute> + <execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliStringUtils' method='replace' > + <parameter name="source" value="`$tmp.patchPLMNInfoListEntry-cellDU.url`"/> + <parameter name="outputPath" value="tmp.patchPLMNInfoListEntry-cellDU.url"/> + <parameter name="target" value="{idNRCellDU}"/> + <parameter name="replacement" value="`$tmp.cellCULocalId`"/> + </execute> + <execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliStringUtils' method='replace' > + <parameter name="source" value="`$tmp.patchPLMNInfoListEntry-cellDU.url`"/> + <parameter name="outputPath" value="tmp.patchPLMNInfoListEntry-cellDU.url"/> + <parameter name="target" value="{mcc}"/> + <parameter name="replacement" value="`$tmp.mcc`"/> + </execute> + <execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliStringUtils' method='replace' > + <parameter name="source" value="`$tmp.patchPLMNInfoListEntry-cellDU.url`"/> + <parameter name="outputPath" value="tmp.patchPLMNInfoListEntry-cellDU.url"/> + <parameter name="target" value="{mnc}"/> + <parameter name="replacement" value="`$tmp.mnc`"/> + </execute> + <record plugin="org.onap.ccsdk.sli.core.sli.recording.FileRecorder"> + <parameter name="file" value="/opt/opendaylight/current/data/log/activateRANSlice.log" /> + <parameter name="level" value="info" /> + <parameter name="field1" value="patch cellCU NSSAI parameters"/> + <parameter name="field2" value="`$tmp.nearRTRICId`"/> + <parameter name="field3" value="`$tmp.GNBDUId`"/> + <parameter name="field4" value="`$tmp.cellDULocalId`"/> + <parameter name="field5" value="`$tmp.mcc`"/> + <parameter name="field6" value="`$tmp.mnc`"/> + <parameter name="field7" value="`$tmp.patchPLMNInfoListEntry-cellDU.url`"/> + </record> + <execute plugin='org.onap.ccsdk.sli.plugins.restapicall.RestapiCallNode' method='sendRequest' > + <parameter name="templateFileName" value="`$prop.restapi.templateDir + '/ranSlice-patch-sNSSAI-status.json'`" /> + <parameter name="restapiUrl" value="`$prop.controller.url + $tmp.patchPLMNInfoListEntry-cellDU.url`"/> + <parameter name="restapiUser" value="`$prop.controller.user`" /> + <parameter name="restapiPassword" value="`$prop.controller.pwd`"/> + <parameter name="httpMethod" value="PATCH"/> + <parameter name="responsePrefix" value="activate-cellDU-PLMNInfoList-response"/> + <parameter name='contentType' value='application/yang.patch+json' /> + <parameter name='accept' value='application/yang.patch-status+json'/> + <parameter name='format' value='json' /> + <outcome value='failure'> + <block atomic='true'> + <block atomic='true'> + <set> + <parameter name="tmp.so.callbackURL" value="`$payloadJson.input.callbackURL`"/> + <parameter name="tmp.status" value="`$error-code`"/> + <parameter name="tmp.reason" value="`$error-message`"/> + <parameter name="tmp.requestID" value="`$instantiateRANSlice-input.common-header.request-id`"/> + <parameter name="tmp.action" value="`$instantiateRANSlice-input.action`"/> + </set> + <record plugin="org.onap.ccsdk.sli.core.sli.recording.FileRecorder"> + <parameter name="file" value="/opt/opendaylight/current/data/log/so-callback-response.log" /> + <parameter name="level" value="info" /> + <parameter name="field1" value="URL for SO Callback Response"/> + <parameter name='field2' value="`$tmp.so.callbackURL`" /> + <parameter name='field3' value="`$tmp.status`" /> + <parameter name='field4' value="`$tmp.reason`" /> + <parameter name='field5' value="`$tmp.requestID`" /> + <parameter name='field6' value="`$tmp.action`" /> + </record> + <execute plugin='org.onap.ccsdk.sli.plugins.restapicall.RestapiCallNode' method='sendRequest' > + <parameter name="templateFileName" value="`$prop.restapi.templateDir + '/ranSlice-so-response.json'`" /> + <parameter name="restapiUrl" value="`$tmp.so.callbackURL`"/> + <parameter name="httpMethod" value="POST"/> + <parameter name="responsePrefix" value="so-callback-modify-response"/> + <parameter name='contentType' value='application/json' /> + <parameter name='format' value='json' /> + <parameter name='accept' value='application/json' /> + <parameter name="convertResponse" value="true"/> + <outcome value='failure'> + <block> + <return status='failure'> + <parameter name='ack-final' value='Y'/> + <parameter name="error-code" value="500" /> + <parameter name="error-message" value="Error sending SO Response" /> + </return> + </block> + </outcome> + <outcome value='success'> + <block> + <record plugin="org.onap.ccsdk.sli.core.sli.recording.FileRecorder"> + <parameter name="file" value="/opt/opendaylight/current/data/log/activateRANSlice.log" /> + <parameter name="level" value="info" /> + <parameter name="field1" value="SO Response Sent "/> + </record> + </block> + </outcome> + </execute> + </block> + <set> + <parameter name='error-code' value='500'/> + <parameter name='error-message' value='Error patching cellDU PLMNInfoList. Aborting RPC executiopn'/> + </set> + <return status='failure'> + <parameter name='ack-final' value='Y'/> + <parameter name='error-code' value='500'/> + <parameter name='error-message' value='Error updating NECellDU - PLMNInfo. Aborting RPC executiopn'/> + </return> + </block> + </outcome> + <outcome value='success'> + <block atomic='true'> + <record plugin="org.onap.ccsdk.sli.core.sli.recording.FileRecorder"> + <parameter name="file" value="/opt/opendaylight/current/data/log/activateRANSlice.log" /> + <parameter name="level" value="info" /> + <parameter name="field1" value="Successfully Patched - cellDU PLMNInfo List"/> + </record> + </block> + </outcome> + </execute> + </block> + </outcome> + </switch> + </block> + </for> + </block> + </for> + </block> + </for> + </block> + </for> <return status='success'> - <parameter name="ack-final-indicator" value="Y" /> + <parameter name="ack-final" value="Y" /> <parameter name="error-code" value="200" /> <parameter name="error-message" value="SUCCESSFUL Execution" /> </return> + <block atomic='true'> + <set> + <parameter name="tmp.status" value="`$error-code`"/> + <parameter name="tmp.reason" value="`$error-message`"/> + <parameter name="tmp.requestID" value="`$activate-r-a-n-slice-input.common-header.request-id `"/> + <parameter name="tmp.action" value="`$activate-r-a-n-slice-input.action`"/> + </set> + <execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliStringUtils' method='replace' > + <parameter name="source" value="`$prop.restapi.so.callbackURL`"/> + <parameter name="outputPath" value="tmp.so.callbackURL"/> + <parameter name="target" value="{requestId}"/> + <parameter name="replacement" value="`$tmp.requestID`"/> + </execute> + <record plugin="org.onap.ccsdk.sli.core.sli.recording.FileRecorder"> + <parameter name="file" value="/opt/opendaylight/current/data/log/so-callback-response.log" /> + <parameter name="level" value="info" /> + <parameter name="field1" value="URL for SO Callback Response"/> + <parameter name='field2' value="`$payloadJson.input.callbackURL`" /> + <parameter name='field3' value="`$tmp.status`" /> + <parameter name='field4' value="`$tmp.reason`" /> + <parameter name='field5' value="`$tmp.requestID`" /> + <parameter name='field6' value="`$tmp.action`" /> + </record> + <execute plugin='org.onap.ccsdk.sli.plugins.restapicall.RestapiCallNode' method='sendRequest' > + <parameter name="templateFileName" value="`$prop.restapi.templateDir + '/ranSlice-so-response.json'`" /> + <parameter name="restapiUrl" value="`$payloadJson.input.callbackURL`"/> + <parameter name="httpMethod" value="POST"/> + <parameter name="responsePrefix" value="so-callback-response"/> + <parameter name='contentType' value='application/json' /> + <parameter name='format' value='json' /> + <parameter name='accept' value='application/json' /> + <parameter name="restapiUser" value="`$prop.restapi.so.user`" /> + <parameter name="restapiPassword" value="`$prop.restapi.so.password`"/> + <outcome value='failure'> + <block> + <set> + <parameter name='error-code' value='500'/> + <parameter name='error-message' value='Error sending SO response. Aborting RPC executiopn'/> + </set> + <return status='failure'> + <parameter name='ack-final' value='Y'/> + <parameter name="error-code" value="500" /> + <parameter name="error-message" value="Error sending SO Response" /> + </return> + </block> + </outcome> + <outcome value='success'> + <block> + <record plugin="org.onap.ccsdk.sli.core.sli.recording.FileRecorder"> + <parameter name="file" value="/opt/opendaylight/current/data/log/activateRANSlice.log" /> + <parameter name="level" value="info" /> + <parameter name="field1" value="SO Response Sent "/> + </record> + </block> + </outcome> + </execute> + </block> </block> </method> </service-logic>
\ No newline at end of file |