--- /dev/null
+<service-logic\r
+ xmlns='http://www.onap.org/sdnc/svclogic'\r
+ xmlns:xsi='http://www.w3.org/2001/XMLSchema-instance' xsi:schemaLocation='http://www.onap.org/sdnc/svclogic ./svclogic.xsd' module='GENERIC-RESOURCE-API' version='${project.version}'>\r
+ <method rpc='sotn-attachment-topology-operation-delete' mode='sync'>\r
+ <block atomic="true">\r
+ <set>\r
+ <parameter name='tmp.ar.allotted-resource-id' value='`$connection-attachment-topology-operation-input.allotted-resource-information.allotted-resource-id`' />\r
+ <parameter name='tmp.ar.parent-service-instance-id' value='`$connection-attachment-topology-operation-input.allotted-resource-information.parent-service-instance-id`' />\r
+ </set>\r
+ <set>\r
+ <parameter name='tmp.ar.self-link' value="`'restconf/config/GENERIC-RESOURCE-API:connection-attachment-allotted-resources/connection-attachment-allotted-resource/'\r
+ + $tmp.ar.allotted-resource-id\r
+ + '/allotted-resource-data/connection-attachment-topology/'` " />\r
+ </set>\r
+ <execute plugin='org.onap.ccsdk.sli.plugins.prop.PropertiesNode' method='readProperties' >\r
+ <parameter name='fileName' value='%SDNC_CONFIG_DIR%/generic-resource-api-dg.properties' />\r
+ <parameter name='contextPrefix' value='prop' />\r
+ </execute>\r
+ <execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliStringUtils' method='replace' >\r
+ <parameter name="source" value="`$prop.restapi.connection-attachment-allottedresource`"/>\r
+ <parameter name="outputPath" value="tmp.ar-url"/>\r
+ <parameter name="target" value="{allotted-resource-id}"/>\r
+ <parameter name="replacement" value="`$tmp.ar.allotted-resource-id`"/>\r
+ </execute>\r
+ <execute plugin='org.onap.ccsdk.sli.plugins.restapicall.RestapiCallNode' method='sendRequest' >\r
+ <parameter name='restapiUrl' value='`$prop.controller.url + $tmp.ar-url`' />\r
+ <parameter name='restapiUser' value='`$prop.controller.user`' />\r
+ <parameter name='restapiPassword' value='`$prop.controller.pwd`' />\r
+ <parameter name='format' value='json' />\r
+ <parameter name='httpMethod' value='Delete' />\r
+ <parameter name="responsePrefix" value="mdsal-ar" />\r
+ <outcome value='success'>\r
+ <block></block>\r
+ </outcome>\r
+ <outcome value='failure'>\r
+ <return status='failure'>\r
+ <parameter name='ack-final' value='Y'/>\r
+ <parameter name="error-code" value="500" />\r
+ <parameter name="error-message" value="Error updating md-sal for connection-attachment-allotted-resource" />\r
+ </return>\r
+ </outcome>\r
+ <outcome value='not-found'>\r
+ <return status='failure'>\r
+ <parameter name='ack-final' value='Y'/>\r
+ <parameter name="error-code" value="500" />\r
+ <parameter name="error-message" value="Error updating md-sal for connection-attachment-allotted-resource" />\r
+ </return>\r
+ </outcome>\r
+ </execute>\r
+ <switch test='`$service-data.consumed-allotted-resources.consumed-allotted-resource_length`'>\r
+ <outcome value=''>\r
+ <return status='failure'>\r
+ <parameter name='ack-final' value='Y'/>\r
+ <parameter name="error-code" value="500" />\r
+ <parameter name="error-message" value="Resource to be deleted doesn't exist in MDSAL." />\r
+ </return>\r
+ </outcome>\r
+ <outcome value='Other'>\r
+ <block atomic="true">\r
+ <for index='cidx' start='0' end='`$service-data.consumed-allotted-resources.consumed-allotted-resource_length`' >\r
+ <switch test="`$service-data.consumed-allotted-resources.consumed-allotted-resource[$cidx].allotted-resource-id == $tmp.ar.allotted-resource-id`">\r
+ <outcome value='true'>\r
+ <block atomic="true">\r
+ <set>\r
+ <parameter name='tmp.cidx' value='`$cidx`' />\r
+ </set>\r
+ </block>\r
+ </outcome>\r
+ </switch>\r
+ </for>\r
+ <switch test="`$tmp.cidx`">\r
+ <outcome value=''>\r
+ <return status='failure'>\r
+ <parameter name='ack-final' value='Y'/>\r
+ <parameter name="error-code" value="500" />\r
+ <parameter name="error-message" value="resource to be deleted is not available in mdsal" />\r
+ </return>\r
+ </outcome>\r
+ </switch>\r
+ </block>\r
+ </outcome>\r
+ </switch>\r
+ <set>\r
+ <parameter name="service-data.consumed-allotted-resources.consumed-allotted-resource[$cidx]." value="" />\r
+ <parameter name='service-data.consumed-allotted-resources.consumed-allotted-resource_length' value='`$service-data.consumed-allotted-resources.consumed-allotted-resource_length - 1`' />\r
+ </set>\r
+ <set>\r
+ <parameter name='tmp.ar.parent-service-instance-id' value="`$connection-attachment-topology-operation-input.allotted-resource-information.parent-service-instance-id` " />\r
+ </set>\r
+ <execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliStringUtils' method='replace' >\r
+ <parameter name="source" value="/restconf/config/GENERIC-RESOURCE-API:services/service/{service-instance-id}/service-data"/>\r
+ <parameter name="outputPath" value="tmp.ar-url-psd"/>\r
+ <parameter name="target" value="{service-instance-id}"/>\r
+ <parameter name="replacement" value="`$tmp.ar.parent-service-instance-id`"/>\r
+ </execute>\r
+ <execute plugin='org.onap.ccsdk.sli.plugins.restapicall.RestapiCallNode' method='sendRequest' >\r
+ <parameter name='restapiUrl' value='`$prop.controller.url + $tmp.ar-url-psd`' />\r
+ <parameter name='restapiUser' value='`$prop.controller.user`' />\r
+ <parameter name='restapiPassword' value='`$prop.controller.pwd`' />\r
+ <parameter name='format' value='json' />\r
+ <parameter name='httpMethod' value='GET' />\r
+ <parameter name="responsePrefix" value="mdsal-psd" />\r
+ <outcome value='success'>\r
+ <block></block>\r
+ </outcome>\r
+ <outcome value='Other'>\r
+ <return status='failure'>\r
+ <parameter name='ack-final' value='Y'/>\r
+ <parameter name="error-code" value="404" />\r
+ <parameter name="error-message" value="Error: SOTN resource not found" />\r
+ </return>\r
+ </outcome>\r
+ </execute>\r
+ <switch test='`$mdsal-psd.service-data.provided-allotted-resources.provided-allotted-resource_length`'>\r
+ <outcome value=''>\r
+ <return status='failure'>\r
+ <parameter name='ack-final' value='Y'/>\r
+ <parameter name="error-code" value="500" />\r
+ <parameter name="error-message" value="Resource to be deleted doesn't exist in MDSAL." />\r
+ </return>\r
+ </outcome>\r
+ <outcome value='Other'>\r
+ <block atomic="true">\r
+ <for index='pidx' start='0' end='`$mdsal-psd.service-data.provided-allotted-resources.provided-allotted-resource_length`' >\r
+ <switch test="`$mdsal-psd.service-data.provided-allotted-resources.provided-allotted-resource[$pidx].allotted-resource-id == $tmp.ar.allotted-resource-id`">\r
+ <outcome value='true'>\r
+ <block atomic="true">\r
+ <set>\r
+ <parameter name='tmp.pidx' value='`$pidx`' />\r
+ </set>\r
+ </block>\r
+ </outcome>\r
+ </switch>\r
+ </for>\r
+ <switch test="`$tmp.pidx`">\r
+ <outcome value=''>\r
+ <return status='failure'>\r
+ <parameter name='ack-final' value='Y'/>\r
+ <parameter name="error-code" value="500" />\r
+ <parameter name="error-message" value="resource to be deleted is not available in mdsal" />\r
+ </return>\r
+ </outcome>\r
+ </switch>\r
+ </block>\r
+ </outcome>\r
+ </switch>\r
+ <execute plugin='org.onap.ccsdk.sli.plugins.restapicall.RestapiCallNode' method='sendRequest' >\r
+ <parameter name='restapiUrl' value="`$prop.controller.url + $tmp.ar-url-psd + '/provided-allotted-resources/provided-allotted-resource/' + $tmp.ar.allotted-resource-id`" />\r
+ <parameter name='restapiUser' value='`$prop.controller.user`' />\r
+ <parameter name='restapiPassword' value='`$prop.controller.pwd`' />\r
+ <parameter name='format' value='json' />\r
+ <parameter name='httpMethod' value='DELETE' />\r
+ <parameter name="responsePrefix" value="mdsal-psd-delete" />\r
+ </execute>\r
+ <set>\r
+ <parameter name='allotted-resource-id' value='`$tmp.ar.allotted-resource-id`' />\r
+ <parameter name='connection-attachment-object-path' value="`$tmp.ar.self-link`"/>\r
+ <parameter name='service-object-path' value="`'restconf/config/GENERIC-RESOURCE-API:services/service/'\r
+ + $connection-attachment-topology-operation-input.service-information.service-instance-id\r
+ + '/service-data/service-topology/'`"/>\r
+ </set>\r
+ <delete plugin="org.onap.ccsdk.sli.adaptors.aai.AAIService" resource='allotted-resource' \r
+ key="customer.global-customer-id = $connection-attachment-topology-operation-input.service-information.global-customer-id AND\r
+ service-subscription.service-type = $connection-attachment-topology-operation-input.service-information.subscription-service-type AND\r
+ service-instance.service-instance-id = $connection-attachment-topology-operation-input.service-information.service-instance-id AND\r
+ allotted-resource.id = $tmp.ar.allotted-resource-id">\r
+ <outcome value='failure'>\r
+ <return status='failure'>\r
+ <parameter name='ack-final' value='Y'/>\r
+ <parameter name="error-code" value="500" />\r
+ <parameter name="error-message" value="AAI failed" />\r
+ </return>\r
+ </outcome>\r
+ <outcome value='not-found'>\r
+ <return status='failure'>\r
+ <parameter name='ack-final' value='Y'/>\r
+ <parameter name="error-code" value="500" />\r
+ <parameter name="error-message" value="AAI failed" />\r
+ </return>\r
+ </outcome>\r
+ </delete>\r
+ <return status='success'>\r
+ <parameter name="ack-final-indicator" value="Y" />\r
+ <parameter name="error-code" value="200" />\r
+ <parameter name="error-message" value="`$error-message`" />\r
+ </return>\r
+ </block>\r
+ </method>\r
+</service-logic>\r