Generic resource API DG catch up
[sdnc/oam.git] / platform-logic / generic-resource-api / src / main / xml / GENERIC-RESOURCE-API_naming-policy-generate-unique-name.xml
diff --git a/platform-logic/generic-resource-api/src/main/xml/GENERIC-RESOURCE-API_naming-policy-generate-unique-name.xml b/platform-logic/generic-resource-api/src/main/xml/GENERIC-RESOURCE-API_naming-policy-generate-unique-name.xml
new file mode 100644 (file)
index 0000000..23aece7
--- /dev/null
@@ -0,0 +1,182 @@
+<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