Generic resource API DG catch up
[sdnc/oam.git] / platform-logic / generic-resource-api / src / main / xml / GENERIC-RESOURCE-API_rollback-generated-names.xml
diff --git a/platform-logic/generic-resource-api/src/main/xml/GENERIC-RESOURCE-API_rollback-generated-names.xml b/platform-logic/generic-resource-api/src/main/xml/GENERIC-RESOURCE-API_rollback-generated-names.xml
new file mode 100644 (file)
index 0000000..d36c406
--- /dev/null
@@ -0,0 +1,336 @@
+<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='rollback-generated-names' mode='sync'>\r
+        <block atomic="true">\r
+            <switch test='`$rollback-generated-names-input.context-id`'>\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="rollback-generated-names-input.context-id can not be null" />\r
+                    </return>\r
+                </outcome>\r
+            </switch>\r
+            <switch test='`$rollback-generated-names-input.naming-type`'>\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="rollback-generated-names-input.naming-type can not be null" />\r
+                    </return>\r
+                </outcome>\r
+                <outcome value='VM_INSTANCE'>\r
+                    <set>\r
+                        <parameter name='rollback-generated-names.index-table-name' value='NAMING_POLICY_VM_NAME_INDEX' />\r
+                        <parameter name='rollback-generated-names.index-table.name-prefix-column' value='vm_name_prefix' />\r
+                    </set>\r
+                </outcome>\r
+                <outcome value='VNFC_INSTANCE'>\r
+                    <set>\r
+                        <parameter name='rollback-generated-names.index-table-name' value='NAMING_POLICY_VNFC_NAME_INDEX' />\r
+                        <parameter name='rollback-generated-names.index-table.name-prefix-column' value='vnfc_name_prefix' />\r
+                    </set>\r
+                </outcome>\r
+                <outcome value='CLIENT_KEY'>\r
+                    <set>\r
+                        <parameter name='rollback-generated-names.index-table-name' value='EIPAM_CLIENT_KEY_INDEX' />\r
+                        <parameter name='rollback-generated-names.index-table.name-prefix-column' value='vnf_name_prefix' />\r
+                    </set>\r
+                </outcome>\r
+                <outcome value='NETWORK_INSTANCE'>\r
+                    <set>\r
+                        <parameter name='rollback-generated-names.index-table-name' \r
+       value='NETWORK_INSTANCE_NAME_INDEX' />\r
+                        <parameter name='rollback-generated-names.index-table.name-prefix-column' \r
+       value='network_instance_name_prefix' />\r
+                    </set>\r
+                </outcome>\r
+                <outcome value='SERVICE_INSTANCE'>\r
+                    <set>\r
+                        <parameter name='rollback-generated-names.index-table-name' \r
+       value='SERVICE_INSTANCE_NAME_INDEX' />\r
+                        <parameter name='rollback-generated-names.index-table.name-prefix-column' \r
+       value='service_instance_name_prefix' />\r
+                    </set>\r
+                </outcome>\r
+                <outcome value='VNF_INSTANCE'>\r
+                    <set>\r
+                        <parameter name='rollback-generated-names.index-table-name' value='VNF_NAME_INDEX' />\r
+                        <parameter name='rollback-generated-names.index-table.name-prefix-column' \r
+       value='vnf_name_prefix' />\r
+                    </set>\r
+                </outcome>\r
+                <outcome value='Other'>\r
+                    <return status='failure'>\r
+                        <parameter name='ack-final' value='Y'/>\r
+                        <parameter name="error-code" value="500" />\r
+                        <parameter name="error-message" value="`'Unknown rollbck-generated-name-input.naming-type: ' + $rollback-generated-names-input.naming-type`" />\r
+                    </return>\r
+                </outcome>\r
+            </switch>\r
+            <set>\r
+                <parameter name='db.grn.' value='' />\r
+            </set>\r
+            <get-resource plugin='org.onap.ccsdk.sli.adaptors.resource.sql.SqlResource' resource='SQL'\r
+       key='SELECT distinct prefix from GENERIC_RESOURCE_NAME WHERE type = $rollback-generated-names-input.naming-type  \r
+               AND context_id = $rollback-generated-names-input.context-id'\r
+  pfx='db.grn.distinct-prefix[]'>\r
+                <outcome value='failure'>\r
+                    <return status='failure'>\r
+                        <parameter name='error-code' value='500'/>\r
+                        <parameter name='error-message' value="Encountered error reading GENERIC_RESOURCE_NAME table to retrieve distinct prefix"/>\r
+                    </return>\r
+                </outcome>\r
+                <outcome value='not-found'>\r
+                    <set>\r
+                        <parameter name='db.grn.distinct-prefix_length' value='0' />\r
+                    </set>\r
+                </outcome>\r
+            </get-resource>\r
+            <for index='prefix-index' start='0' end='`$db.grn.distinct-prefix_length`' >\r
+                <block atomic='true'>\r
+                    <set>\r
+                        <parameter name='db.grn.subset.' value='' />\r
+                    </set>\r
+                    <set>\r
+                        <parameter name='tmp.rb.' value='' />\r
+                    </set>\r
+                    <set>\r
+                        <parameter name='tmp.rb.grn.prefix' value='`$db.grn.distinct-prefix[$prefix-index].prefix`' />\r
+                    </set>\r
+                    <get-resource plugin='org.onap.ccsdk.sli.adaptors.resource.sql.SqlResource' resource='SQL'\r
+       key='SELECT * from GENERIC_RESOURCE_NAME WHERE type = $rollback-generated-names-input.naming-type   \r
+               AND context_id = $rollback-generated-names-input.context-id \r
+               AND prefix = $tmp.rb.grn.prefix order by name_index'\r
+  pfx='db.grn.subset[]'>\r
+                        <outcome value='failure'>\r
+                            <return status='failure'>\r
+                                <parameter name='error-code' value='500'/>\r
+                                <parameter name='error-message' value="Encountered error reading GENERIC_RESOURCE_NAME table"/>\r
+                            </return>\r
+                        </outcome>\r
+                        <outcome value='not-found'>\r
+                            <return status='failure'>\r
+                                <parameter name='error-code' value='500'/>\r
+                                <parameter name='error-message' value="`'No entry found in GENERIC_RESOURCE_NAME where context_id = ' + $rollback-generated-names-input.context-id + ' and type = ' + $rollback-generated-names-input.naming-type + ' and prefix = ' + $db.grn.distinct-prefix[$prefix-index].prefix`"/>\r
+                            </return>\r
+                        </outcome>\r
+                    </get-resource>\r
+                    <block atomic='true'>\r
+                        <set>\r
+                            <parameter name='tmp.rb.sql' \r
+       value="`'SELECT * from ' + $rollback-generated-names.index-table-name \r
+               + ' WHERE ' + $rollback-generated-names.index-table.name-prefix-column \r
+               + ' = $tmp.rb.grn.prefix'`" />\r
+                        </set>\r
+                        <get-resource plugin='org.onap.ccsdk.sli.adaptors.resource.sql.SqlResource' resource='SQL'\r
+  key="`$tmp.rb.sql`" pfx='db.grn.index-table'>\r
+                            <outcome value='failure'>\r
+                                <return status='failure'>\r
+                                    <parameter name='error-message' value="`'Error reading the '\r
+       + $rollback-generated-names.index-table-name \r
+       + ' table with ' + $rollback-generated-names.name-prefix-column\r
+       + ' = ' + $tmp.rb.grn.prefix \r
+       + '. MANUAL clean up is required!'`" />\r
+                                </return>\r
+                            </outcome>\r
+                            <outcome value='not-found'>\r
+                                <return status='failure'>\r
+                                    <parameter name='error-message' value="`'No entries found in ' \r
+       + $rollback-generated-names.index-table-name \r
+       + ' with ' \r
+       + $rollback-generated-names.name-prefix-column \r
+       + ' = ' \r
+       + $tmp.rb.grn.prefix `" />\r
+                                </return>\r
+                            </outcome>\r
+                        </get-resource>\r
+                    </block>\r
+                    <set>\r
+                        <parameter name='tmp.rb.grn.max-index' \r
+       value='`$db.grn.subset[$db.grn.subset_length - 1].name-index`' />\r
+                    </set>\r
+                    <set>\r
+                        <parameter name='tmp.rb.delta-index' \r
+       value='`$db.grn.index-table.index-number - $tmp.rb.grn.max-index`' />\r
+                    </set>\r
+                    <set>\r
+                        <parameter name='tmp.rb.net-index' \r
+       value='`$db.grn.index-table.index-number - $db.grn.subset_length`' />\r
+                    </set>\r
+                    <switch test="`$tmp.rb.delta-index == 0`">\r
+                        <outcome value='true'>\r
+                            <switch test="`$tmp.rb.net-index == 0`">\r
+                                <outcome value='true'>\r
+                                    <block atomic='true'>\r
+                                        <set>\r
+                                            <parameter name='tmp.rb.sql' \r
+       value="`'DELETE from ' + $rollback-generated-names.index-table-name \r
+               + ' WHERE ' + $rollback-generated-names.index-table.name-prefix-column \r
+               + ' = $tmp.rb.grn.prefix'`" />\r
+                                            <!--\r
++ ' = $tmp.rb.grn.prefix AND index_number = $db.grn.index-table.index-number'`" />\r
+-->\r
+                                        </set>\r
+                                        <update plugin='org.onap.ccsdk.sli.adaptors.resource.sql.SqlResource' resource='SQL'\r
+  key="`$tmp.rb.sql`">\r
+                                            <outcome value='failure'>\r
+                                                <return status='failure'>\r
+                                                    <parameter name='error-message' value="`'Error deleting '\r
+       + $rollback-generated-names.index-table-name \r
+       + ' WHERE ' + $rollback-generated-names.name-prefix-column \r
+       + ' = ' + $tmp.rb.grn.prefix \r
+       + ' AND index_number = ' + $db.index-table.index-number\r
+       + '. MANUAL clean up is required!'`" />\r
+                                                </return>\r
+                                            </outcome>\r
+                                            <outcome value='not-found'>\r
+                                                <block></block>\r
+                                            </outcome>\r
+                                        </update>\r
+                                    </block>\r
+                                </outcome>\r
+                                <outcome value='false'>\r
+                                    <block atomic='true'>\r
+                                        <set>\r
+                                            <parameter name='tmp.rb.sql' \r
+       value="`'UPDATE ' + $rollback-generated-names.index-table-name \r
+               + ' set index_number = ' + $tmp.rb.net-index\r
+               + ' WHERE ' + $rollback-generated-names.index-table.name-prefix-column \r
+               + ' = $tmp.rb.grn.prefix'`" />\r
+                                        </set>\r
+                                        <update plugin='org.onap.ccsdk.sli.adaptors.resource.sql.SqlResource' resource='SQL'\r
+  key="`$tmp.rb.sql`">\r
+                                            <outcome value='failure'>\r
+                                                <return status='failure'>\r
+                                                    <parameter name='error-message' value="`'Error updating  '\r
+       + $rollback-generated-names.index-table-name + '.index_number = ' \r
+       + $tmp.rb.net-index\r
+       + ' WHERE ' + $rollback-generated-names.name-prefix-column \r
+       + ' = ' + $tmp.rb.grn.prefix\r
+       + '. MANUAL clean up is required!'`" />\r
+                                                </return>\r
+                                            </outcome>\r
+                                            <outcome value='not-found'>\r
+                                                <return status='failure'>\r
+                                                    <parameter name='error-message' value="`'Error updating  '\r
+       + $rollback-generated-names.index-table-name + '.index_number = ' \r
+       + $tmp.rb.net-index\r
+       + ' WHERE ' + $rollback-generated-names.name-prefix-column \r
+       + ' = ' + $tmp.rb.grn.prefix\r
+       + '. MANUAL clean up is required!'`" />\r
+                                                </return>\r
+                                            </outcome>\r
+                                        </update>\r
+                                    </block>\r
+                                </outcome>\r
+                            </switch>\r
+                        </outcome>\r
+                        <outcome value='false'>\r
+                            <block></block>\r
+                        </outcome>\r
+                    </switch>\r
+                    <delete plugin='org.onap.ccsdk.sli.adaptors.resource.sql.SqlResource' resource='SQL'\r
+       key='DELETE from GENERIC_RESOURCE_NAME WHERE type = $rollback-generated-names-input.naming-type  \r
+               AND context_id = $rollback-generated-names-input.context-id \r
+               AND prefix = $tmp.rb.grn.prefix'>\r
+                        <outcome value='failure'>\r
+                            <return status='failure'>\r
+                                <parameter name='error-message' value="`'Error deleting GENERIC_RESOURCE_NAME WHERE type = '\r
+       + $rollback-generated-names-input.naming-type  \r
+       + ' AND context_id = ' + $rollback-generated-names-input.context-id \r
+       + ' AND prefix = '+ $tmp.rb.grn.prefix\r
+       + '. MANUAL clean up is required!'`" />\r
+                            </return>\r
+                        </outcome>\r
+                        <outcome value='not-found'>\r
+                            <block></block>\r
+                        </outcome>\r
+                    </delete>\r
+                    <get-resource plugin='org.onap.ccsdk.sli.adaptors.resource.sql.SqlResource' resource='SQL'\r
+       key='SELECT * from GENERIC_RESOURCE_NAME WHERE type = $rollback-generated-names-input.naming-type    \r
+               AND prefix = $tmp.rb.grn.prefix order by name_index'\r
+  pfx='db.grn.prefix[]'>\r
+                        <outcome value='failure'>\r
+                            <return status='failure'>\r
+                                <parameter name='error-code' value='500'/>\r
+                                <parameter name='error-message' value="Encountered error reading GENERIC_RESOURCE_NAME table"/>\r
+                            </return>\r
+                        </outcome>\r
+                        <outcome value='not-found'>\r
+                            <block>\r
+                                <set>\r
+                                    <parameter name='tmp.rb.sql' \r
+       value="`'DELETE from ' + $rollback-generated-names.index-table-name \r
+               + ' WHERE ' + $rollback-generated-names.index-table.name-prefix-column \r
+               + ' = $tmp.rb.grn.prefix'`" />\r
+                                    <!--\r
++ ' = $tmp.rb.grn.prefix AND index_number = $db.grn.index-table.index-number'`" />\r
+-->\r
+                                </set>\r
+                                <update plugin='org.onap.ccsdk.sli.adaptors.resource.sql.SqlResource' resource='SQL'\r
+  key="`$tmp.rb.sql`">\r
+                                    <outcome value='failure'>\r
+                                        <return status='failure'>\r
+                                            <parameter name='error-message' value="`'Error deleting '\r
+       + $rollback-generated-names.index-table-name \r
+       + ' WHERE ' + $rollback-generated-names.name-prefix-column \r
+       + ' = ' + $tmp.rb.grn.prefix \r
+       + ' AND index_number = ' + $db.index-table.index-number`" />\r
+                                        </return>\r
+                                    </outcome>\r
+                                    <outcome value='not-found'>\r
+                                        <block></block>\r
+                                    </outcome>\r
+                                </update>\r
+                            </block>\r
+                        </outcome>\r
+                        <outcome value='success'>\r
+                            <block>\r
+                                <set>\r
+                                    <parameter name='tmp.rb.grn.last-max-index' \r
+       value='`$db.grn.prefix[$db.grn.prefix_length - 1].name-index`' />\r
+                                </set>\r
+                                <switch test="`$tmp.rb.net-index > $tmp.rb.grn.last-max-index`">\r
+                                    <outcome value='true'>\r
+                                        <block>\r
+                                            <set>\r
+                                                <parameter name='tmp.rb.sql' \r
+       value="`'UPDATE ' + $rollback-generated-names.index-table-name \r
+               + ' set index_number = ' + $tmp.rb.grn.last-max-index\r
+               + ' WHERE ' + $rollback-generated-names.index-table.name-prefix-column \r
+               + ' = $tmp.rb.grn.prefix'`" />\r
+                                            </set>\r
+                                            <update plugin='org.onap.ccsdk.sli.adaptors.resource.sql.SqlResource' resource='SQL'\r
+  key="`$tmp.rb.sql`">\r
+                                                <outcome value='failure'>\r
+                                                    <return status='failure'>\r
+                                                        <parameter name='error-message' value="`'Error updating  '\r
+       + $rollback-generated-names.index-table-name + '.index_number = ' \r
+       + $tmp.rb.grn.last-max-index\r
+       + ' WHERE ' + $rollback-generated-names.name-prefix-column \r
+       + ' = ' + $tmp.rb.grn.prefix`" />\r
+                                                    </return>\r
+                                                </outcome>\r
+                                                <outcome value='not-found'>\r
+                                                    <return status='failure'>\r
+                                                        <parameter name='error-message' value="`'Error updating  '\r
+       + $rollback-generated-names.index-table-name + '.index_number = ' \r
+       + $tmp.rb.grn.last-max-index\r
+       + ' WHERE ' + $rollback-generated-names.name-prefix-column \r
+       + ' = ' + $tmp.rb.grn.prefix`" />\r
+                                                    </return>\r
+                                                </outcome>\r
+                                            </update>\r
+                                        </block>\r
+                                    </outcome>\r
+                                </switch>\r
+                            </block>\r
+                        </outcome>\r
+                    </get-resource>\r
+                </block>\r
+            </for>\r
+        </block>\r
+    </method>\r
+</service-logic>
\ No newline at end of file