--- /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='naming-policy-generate-unique-name' mode='sync'>\r
+ <block atomic="true">\r
+ <switch test='`$generate-unique-name-input.action`'>\r
+ <outcome value=''>\r
+ <return status='failure'>\r
+ <parameter name='generate-unique-name-output.error-message' value='generate-unique-name-input.action not supplied' />\r
+ </return>\r
+ </outcome>\r
+ <outcome value='ASSIGN'>\r
+ <block atomic="true">\r
+ <switch test='`$generate-unique-name-input.context-id`'>\r
+ <outcome value=''>\r
+ <return status='failure'>\r
+ <parameter name='error-message' \r
+ value="generate-unique-name-input.context-id cannot be null for ASSIGN action" />\r
+ </return>\r
+ </outcome>\r
+ </switch>\r
+ <switch test='`$generate-unique-name-input.name-table-type`'>\r
+ <outcome value=''>\r
+ <return status='failure'>\r
+ <parameter name='generate-unique-name-output.error-message' value='generate-unique-name-input.name-table-type not supplied' />\r
+ </return>\r
+ </outcome>\r
+ <outcome value='VNF_INSTANCE'>\r
+ <set>\r
+ <parameter name='tmp.gname.custom-query-string' value='nodes/generic-vnfs?vnf-name=' />\r
+ </set>\r
+ </outcome>\r
+ <outcome value='VM_INSTANCE'>\r
+ <set>\r
+ <parameter name='tmp.gname.custom-query-string' value='nodes/vservers?vserver-name=' />\r
+ </set>\r
+ </outcome>\r
+ <outcome value='NETWORK_INSTANCE'>\r
+ <set>\r
+ <parameter name='tmp.gname.custom-query-string' value='nodes/l3-networks?network-name=' />\r
+ </set>\r
+ </outcome>\r
+ <outcome value='SERVICE_INSTANCE'>\r
+ <set>\r
+ <parameter name='tmp.gname.custom-query-string' value='nodes/service-instances?service-instance-name=' />\r
+ </set>\r
+ </outcome>\r
+ <outcome value='VNFC_INSTANCE'>\r
+ <set>\r
+ <parameter name='tmp.gname.custom-query-string' value='nodes/vnfcs?vnfc-name=' />\r
+ </set>\r
+ </outcome>\r
+ </switch>\r
+ <set>\r
+ <parameter name='tmp.gun.nononap' value='NON-ONAP' />\r
+ </set>\r
+ <set>\r
+ <parameter name='tmp.gun.transient' value='TRANSIENT' />\r
+ </set>\r
+ <set>\r
+ <parameter name='tmp.grn.loop.flag' value='true' />\r
+ </set>\r
+ <while test='`$tmp.grn.loop.flag`'>\r
+ <block atomic="true">\r
+ <call module='GENERIC-RESOURCE-API' rpc='generate-unique-name' mode='sync' >\r
+ <outcome value='failure'>\r
+ <block atomic="true">\r
+ <set>\r
+ <parameter name='tmp.grn.loop.flag' value='false' />\r
+ </set>\r
+ <return status='failure'>\r
+ <parameter name='error-message' \r
+ value="`'Encountered error in naming-policy-generate-unique-name: ' + \r
+ $generate-unique-name-output.error-message`" />\r
+ </return>\r
+ </block>\r
+ </outcome>\r
+ </call>\r
+ <execute plugin="org.onap.ccsdk.sli.core.slipluginutils.SliStringUtils" method="urlEncode">\r
+ <parameter name="source" value='`$generate-unique-name-output.generated-name`'/>\r
+ <parameter name="outputPath" value="encoded-name" />\r
+ </execute>\r
+ <save plugin="org.onap.ccsdk.sli.adaptors.aai.AAIService" \r
+ resource="custom-query"\r
+ key="format = 'resource'"\r
+ force="true"\r
+ local-only="false"\r
+ pfx="tmp.nodes-query">\r
+ <parameter name="start[0]" value="`$tmp.gname.custom-query-string + \r
+ $encoded-name`" />\r
+ <parameter name="start_length" value="1" />\r
+ <outcome value='not-found'>\r
+ <set>\r
+ <parameter name='tmp.grn.loop.flag' value='false' />\r
+ </set>\r
+ </outcome>\r
+ <outcome value='failure'>\r
+ <block atomic='true'>\r
+ <set>\r
+ <parameter name='tmp.grn.loop.flag' value='false' />\r
+ </set>\r
+ <return status='failure'>\r
+ <parameter name='error-message' \r
+ value="`'Error updating GENERIC_RESOURCE_NAME.context_id from TRANSIENT to ' \r
+ + $tmp.context-id.nononap`" />\r
+ </return>\r
+ </block>\r
+ </outcome>\r
+ <outcome value='success'>\r
+ <update plugin='org.onap.ccsdk.sli.adaptors.resource.sql.SqlResource' resource='SQL'\r
+ key="update GENERIC_RESOURCE_NAME set context_id = $tmp.gun.nononap \r
+ WHERE type = $generate-unique-name-input.name-table-type \r
+ AND context_id = $tmp.gun.transient">\r
+ <outcome value='failure'>\r
+ <return status='failure'>\r
+ <parameter name='error-message' \r
+ value="`'Error updating GENERIC_RESOURCE_NAME.context_id from TRANSIENT to ' \r
+ + $tmp.context-id.nononap`" />\r
+ </return>\r
+ </outcome>\r
+ <outcome value='not-found'>\r
+ <return status='failure'>\r
+ <parameter name='error-message' \r
+ value="`'No GENERIC_RESOURCE_NAME found with context_id = TRANSIENT and type = ' \r
+ + $generate-unique-name-input.name-table-type`"/>\r
+ </return>\r
+ </outcome>\r
+ </update>\r
+ </outcome>\r
+ </save>\r
+ </block>\r
+ </while>\r
+ <update plugin='org.onap.ccsdk.sli.adaptors.resource.sql.SqlResource' resource='SQL'\r
+ key="update GENERIC_RESOURCE_NAME set context_id = $generate-unique-name-input.context-id \r
+ WHERE type = $generate-unique-name-input.name-table-type \r
+ AND name = $generate-unique-name-output.generated-name \r
+ AND context_id = $tmp.gun.transient">\r
+ <outcome value='failure'>\r
+ <return status='failure'>\r
+ <parameter name='error-message' \r
+ value="`'Error updating GENERIC_RESOURCE_NAME.context_id from TRANSIENT to ' \r
+ + $tmp.context-id.nononap`" />\r
+ </return>\r
+ </outcome>\r
+ <outcome value='not-found'>\r
+ <return status='failure'>\r
+ <parameter name='error-message' \r
+ value="`'No GENERIC_RESOURCE_NAME found with context_id = TRANSIENT and type = ' \r
+ + $generate-unique-name-input.name-table-type`"/>\r
+ </return>\r
+ </outcome>\r
+ </update>\r
+ </block>\r
+ </outcome>\r
+ <outcome value='DELETE'>\r
+ <block atomic='true'>\r
+ <set>\r
+ <parameter name='rollback-generated-names-input.naming-type' value='`$generate-unique-name-input.name-table-type`' />\r
+ </set>\r
+ <set>\r
+ <parameter name='rollback-generated-names-input.context-id' value='`$generate-unique-name-input.context-id`' />\r
+ </set>\r
+ <call module='GENERIC-RESOURCE-API' rpc='rollback-generated-names' mode='sync' >\r
+ <outcome value='failure'>\r
+ <return status='failure'>\r
+ <parameter name='error-message' \r
+ value="`'Encountered error in rollback-generated-names: ' + \r
+ $error-message`" />\r
+ </return>\r
+ </outcome>\r
+ </call>\r
+ </block>\r
+ </outcome>\r
+ <outcome value='Other'>\r
+ <return status='failure'>\r
+ <parameter name='generate-unique-name-output.error-message' value='Invalid generate-unique-name-input.action. Valid values are ASSIGN or DELETE' />\r
+ </return>\r
+ </outcome>\r
+ </switch>\r
+ </block>\r
+ </method>\r
+</service-logic>
\ No newline at end of file