Generic resource API DG catch up
[sdnc/oam.git] / platform-logic / generic-resource-api / src / main / xml / GENERIC-RESOURCE-API_eipam-allocate-generic-subnet.xml
diff --git a/platform-logic/generic-resource-api/src/main/xml/GENERIC-RESOURCE-API_eipam-allocate-generic-subnet.xml b/platform-logic/generic-resource-api/src/main/xml/GENERIC-RESOURCE-API_eipam-allocate-generic-subnet.xml
new file mode 100755 (executable)
index 0000000..1e6c8bb
--- /dev/null
@@ -0,0 +1,1127 @@
+<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='eipam-allocate-generic-subnet' mode='sync'>\r
+        <block atomic='true'>\r
+            <set>\r
+                <parameter name="tmp.eipam-error" value="false" />\r
+                <parameter name="tmp.allocate-v4-subnet-flag" value="N" />\r
+                <parameter name="tmp.allocate-v6-subnet-flag" value="N" />\r
+                <parameter name='eipam-ip-block.plans_length' value='0' />\r
+                <parameter name="eipam-pool.v4.pre-existing" value="N"/>\r
+                <parameter name="eipam-pool.v6.pre-existing" value="N"/>\r
+                <parameter name="tmp.leaf-level" value="N" />\r
+            </set>\r
+            <switch test="`$tmp.activate-subnet-flag`">\r
+                <outcome value="">\r
+                    <block atomic='true'>\r
+                        <!--subnet and subnet_keys are deleted in the EIPAMPlugin-->\r
+                        <set>\r
+                            <parameter name="tmp.activate-subnet-flag" value="Y"/>\r
+                        </set>\r
+                    </block>\r
+                </outcome>\r
+                <outcome value='Y'></outcome>\r
+                <outcome value='N'></outcome>\r
+            </switch>\r
+            <switch test="`$eipam-ip-block.level == $eipam-ip-block.getPlanTopologyResponse.TopologyDetails_length`">\r
+                <outcome value='true'>\r
+                    <block atomic='true'>\r
+                        <!--subnet and subnet_keys are deleted in the EIPAMPlugin-->\r
+                        <set>\r
+                            <parameter name="tmp.leaf-level" value="Y" />\r
+                        </set>\r
+                    </block>\r
+                </outcome>\r
+            </switch>\r
+            <!--Need to know which ipv version to get the plan name from the network-model.-->\r
+            <switch test="`$eipam-ip-block.allocate-version`">\r
+                <outcome value='ipv4'>\r
+                    <block atomic='true'>\r
+                        <switch test="`$l-idx`">\r
+                            <outcome value='1'>\r
+                                <block atomic='true'>\r
+                                    <switch test="`$tmp.skip-first-level`">\r
+                                        <outcome value='Y'></outcome>\r
+                                        <outcome value="">\r
+                                            <block atomic='true'>\r
+                                                <!--subnet and subnet_keys are deleted in the EIPAMPlugin-->\r
+                                                <set>\r
+                                                    <parameter name="eipam-ip-block.plan-name" value="`$network-model.eipam-v4-address-plan`"/>\r
+                                                    <parameter name="eipam-ip-block.activate-subnet-flag" value="`$tmp.activate-subnet-flag`"/>\r
+                                                    <parameter name="eipam-ip-block.leaf-level-indicator" value="`$tmp.leaf-level`"/>\r
+                                                    <parameter name="tmp.allocate-v4-subnet-flag" value="Y" />\r
+                                                    <!-- Number of Pool Levels -->\r
+                                                    <parameter name="eipam-ip-block.pools_length" value="`$eipam-ip-block.level`"/>\r
+                                                </set>\r
+                                                <for index="l4-idx" start="0" end="`$eipam-ip-block.level`">\r
+                                                    <block atomic='true'>\r
+                                                        <!--subnet and subnet_keys are deleted in the EIPAMPlugin-->\r
+                                                        <set>\r
+                                                            <parameter name="eipam-ip-block.pools[$l4-idx].key-name" value="`$v4FQPN-output.pools[$l4-idx].key-name`"/>\r
+                                                            <parameter name="eipam-ip-block.pools[$l4-idx].key-value" value="`$v4FQPN-output.pools[$l4-idx].key-value`"/>\r
+                                                        </set>\r
+                                                        <record plugin="org.onap.ccsdk.sli.core.sli.recording.Slf4jRecorder">\r
+                                                            <parameter name="logger" value="message-log"/>\r
+                                                            <parameter name="field1" value="__TIMESTAMP__"/>\r
+                                                            <parameter name="field2" value="network-topology-operation"/>\r
+                                                            <parameter name="field3" value="eipam-allocate-generic-subnet"/>\r
+                                                            <parameter name="field4" value="`$eipam-ip-block.plan-name`"/>\r
+                                                            <parameter name="field5" value="`$eipam-ip-block.pools[$l4-idx].key-name`"/>\r
+                                                            <parameter name="field6" value="`$eipam-ip-block.pools[$l4-idx].key-value`"/>\r
+                                                        </record>\r
+                                                    </block>\r
+                                                </for>\r
+                                                <!--subnet and subnet_keys are deleted in the EIPAMPlugin-->\r
+                                                <execute plugin="com.att.sdnctl.sli.plugin.eipam.EIPAMPlugin" method="allocateSubnet">\r
+                                                    <outcome value='failure'>\r
+                                                        <return status="failure">\r
+                                                            <parameter name="tmp.eipam-error" value="true" />\r
+                                                            <parameter name="error-code" value="500"/>\r
+                                                            <parameter name="error-message" value="An error occured while allocating V4 subnet in EIPAM." />\r
+                                                        </return>\r
+                                                    </outcome>\r
+                                                </execute>\r
+                                                <get-resource\r
+        plugin='org.onap.ccsdk.sli.adaptors.resource.sql.SqlResource'\r
+        resource='SQL'\r
+        key="SELECT * from EIPAM_IP_POOLS WHERE plan_name = $network-model.eipam-v4-address-plan and level = $eipam-ip-block.level and key_value = $tmp.key-value ; "\r
+        pfx='pfx.eipam-pool-row'>\r
+                                                    <outcome value='failure'>\r
+                                                        <return status="failure">\r
+                                                            <parameter name="tmp.eipam-error" value="true" />\r
+                                                            <parameter name="error-code" value="500"/>\r
+                                                            <parameter name="error-message" value="An error occured while looking for entry in EIPAM_IP_POOLS for V4 subnet in EIPAM." />\r
+                                                        </return>\r
+                                                    </outcome>\r
+                                                    <outcome value="not-found">\r
+                                                        <return status="failure">\r
+                                                            <parameter name="tmp.eipam-error" value="true" />\r
+                                                            <parameter name="error-code" value="500"/>\r
+                                                            <parameter name="error-message" value="An error occured while looking for entry in EIPAM_IP_POOLS for V4 subnet in EIPAM." />\r
+                                                        </return>\r
+                                                    </outcome>\r
+                                                </get-resource>\r
+                                                <switch test="`$network-instance-group-data.subnet-assignment-policy.subnet-use`">\r
+                                                    <outcome value='shared'>\r
+                                                        <save\r
+        plugin='org.onap.ccsdk.sli.adaptors.resource.sql.SqlResource'\r
+        resource='SQL'\r
+        key="INSERT EIPAM_IP_SUBNETS\r
+             SET\r
+             entity_id = $eipam-ip-block.entity-id ,\r
+             service_type = $tmp.service-type ,\r
+             ip_address = $eipam-ip-block.ip-prefix ,\r
+             prefix_length = $eipam-ip-block.mask ,\r
+             plan_name = $network-model.eipam-v4-address-plan ,\r
+             status = 'ACTIVE' ,\r
+             pool_id = $pfx.eipam-pool-row.pool-id ,\r
+             address_family = $network-model.ipv4-ip-version ,\r
+             network_id = $tmp.network-id ,\r
+             network_instance_group_id = $tmp.network-instance-group-id ; "\r
+    force='true'\r
+        pfx='pfx.eipam-v4subnet-row'>\r
+                                                            <outcome value='failure'>\r
+                                                                <return status='failure'>\r
+                                                                    <parameter name='error-code' value='500' />\r
+                                                                    <parameter name='error-message' value='failed to update EIPAM_IP_SUBNETS table.' />\r
+                                                                </return>\r
+                                                            </outcome>\r
+                                                        </save>\r
+                                                    </outcome>\r
+                                                    <outcome value='Other'>\r
+                                                        <save\r
+        plugin='org.onap.ccsdk.sli.adaptors.resource.sql.SqlResource'\r
+        resource='SQL'\r
+        key="INSERT EIPAM_IP_SUBNETS\r
+             SET\r
+             entity_id = $eipam-ip-block.entity-id ,\r
+             service_type = $tmp.service-type ,\r
+             ip_address = $eipam-ip-block.ip-prefix ,\r
+             prefix_length = $eipam-ip-block.mask ,\r
+             plan_name = $network-model.eipam-v4-address-plan ,\r
+             status = 'ACTIVE' ,\r
+             pool_id = $pfx.eipam-pool-row.pool-id ,\r
+             address_family = $network-model.ipv4-ip-version ,\r
+             network_id = $tmp.network-id ; "\r
+    force='true'\r
+        pfx='pfx.eipam-v4subnet-row'>\r
+                                                            <outcome value='failure'>\r
+                                                                <return status='failure'>\r
+                                                                    <parameter name='error-code' value='500' />\r
+                                                                    <parameter name='error-message' value='failed to update EIPAM_IP_SUBNETS table.' />\r
+                                                                </return>\r
+                                                            </outcome>\r
+                                                        </save>\r
+                                                    </outcome>\r
+                                                    <outcome value=''>\r
+                                                        <save\r
+        plugin='org.onap.ccsdk.sli.adaptors.resource.sql.SqlResource'\r
+        resource='SQL'\r
+        key="INSERT EIPAM_IP_SUBNETS\r
+             SET\r
+             entity_id = $eipam-ip-block.entity-id ,\r
+             service_type = $tmp.service-type ,\r
+             ip_address = $eipam-ip-block.ip-prefix ,\r
+             prefix_length = $eipam-ip-block.mask ,\r
+             plan_name = $network-model.eipam-v4-address-plan ,\r
+             status = 'ACTIVE' ,\r
+             pool_id = $pfx.eipam-pool-row.pool-id ,\r
+             address_family = $network-model.ipv4-ip-version ,\r
+             network_id = $tmp.network-id ; "\r
+    force='true'\r
+        pfx='pfx.eipam-v4subnet-row'>\r
+                                                            <outcome value='failure'>\r
+                                                                <return status='failure'>\r
+                                                                    <parameter name='error-code' value='500' />\r
+                                                                    <parameter name='error-message' value='failed to update EIPAM_IP_SUBNETS table.' />\r
+                                                                </return>\r
+                                                            </outcome>\r
+                                                        </save>\r
+                                                    </outcome>\r
+                                                </switch>\r
+                                                <save\r
+        plugin='org.onap.ccsdk.sli.adaptors.resource.sql.SqlResource'\r
+        resource='SQL'\r
+        key="INSERT EIPAM_IP_SUBNET_KEYS\r
+             SET\r
+             entity_id = $eipam-ip-block.entity-id ,\r
+             key_name = $key-name ,\r
+             key_value = $key-value ,\r
+             level = $eipam-ip-block.level ; "\r
+    force='true'\r
+        pfx='pfx.eipam-v4subnet-key-row'>\r
+                                                    <outcome value='failure'>\r
+                                                        <return status='failure'>\r
+                                                            <parameter name='error-code' value='500' />\r
+                                                            <parameter name='error-message' value='failed to update EIPAM_IP_SUBNET_KEYS table.' />\r
+                                                        </return>\r
+                                                    </outcome>\r
+                                                    <outcome value='success'></outcome>\r
+                                                </save>\r
+                                                <record plugin="org.onap.ccsdk.sli.core.sli.recording.Slf4jRecorder">\r
+                                                    <parameter name="logger" value="message-log"/>\r
+                                                    <parameter name="field1" value="__TIMESTAMP__"/>\r
+                                                    <parameter name="field2" value="network-topology-operation"/>\r
+                                                    <parameter name="field3" value="eipam-allocate-generic-subnet"/>\r
+                                                    <parameter name="field4" value="`$network-model.eipam-v4-address-plan`"/>\r
+                                                    <parameter name="field5" value="`$key-value`"/>\r
+                                                    <parameter name="field6" value="`$tmp.eipam-pool-row.pool-id`"/>\r
+                                                    <parameter name="field7" value="`$tmp.network_instance_group_id`"/>\r
+                                                    <parameter name="field8" value="`$eipam-ip-block.level`"/>\r
+                                                    <parameter name="field9" value="`$network-model.network-role`"/>\r
+                                                    <parameter name="field10" value="`$tmp.network-id`"/>\r
+                                                    <parameter name="field11" value="subnet saved to DB."/>\r
+                                                </record>\r
+                                            </block>\r
+                                        </outcome>\r
+                                        <outcome value='N'>\r
+                                            <block atomic='true'>\r
+                                                <!--subnet and subnet_keys are deleted in the EIPAMPlugin-->\r
+                                                <set>\r
+                                                    <parameter name="eipam-ip-block.plan-name" value="`$network-model.eipam-v4-address-plan`"/>\r
+                                                    <parameter name="eipam-ip-block.activate-subnet-flag" value="`$tmp.activate-subnet-flag`"/>\r
+                                                    <parameter name="eipam-ip-block.leaf-level-indicator" value="`$tmp.leaf-level`"/>\r
+                                                    <parameter name="tmp.allocate-v4-subnet-flag" value="Y" />\r
+                                                    <!-- Number of Pool Levels -->\r
+                                                    <parameter name="eipam-ip-block.pools_length" value="`$eipam-ip-block.level`"/>\r
+                                                </set>\r
+                                                <for index="l4-idx" start="0" end="`$eipam-ip-block.level`">\r
+                                                    <block atomic='true'>\r
+                                                        <!--subnet and subnet_keys are deleted in the EIPAMPlugin-->\r
+                                                        <set>\r
+                                                            <parameter name="eipam-ip-block.pools[$l4-idx].key-name" value="`$v4FQPN-output.pools[$l4-idx].key-name`"/>\r
+                                                            <parameter name="eipam-ip-block.pools[$l4-idx].key-value" value="`$v4FQPN-output.pools[$l4-idx].key-value`"/>\r
+                                                        </set>\r
+                                                        <record plugin="org.onap.ccsdk.sli.core.sli.recording.Slf4jRecorder">\r
+                                                            <parameter name="logger" value="message-log"/>\r
+                                                            <parameter name="field1" value="__TIMESTAMP__"/>\r
+                                                            <parameter name="field2" value="network-topology-operation"/>\r
+                                                            <parameter name="field3" value="eipam-allocate-generic-subnet"/>\r
+                                                            <parameter name="field4" value="`$eipam-ip-block.plan-name`"/>\r
+                                                            <parameter name="field5" value="`$eipam-ip-block.pools[$l4-idx].key-name`"/>\r
+                                                            <parameter name="field6" value="`$eipam-ip-block.pools[$l4-idx].key-value`"/>\r
+                                                        </record>\r
+                                                    </block>\r
+                                                </for>\r
+                                                <!--subnet and subnet_keys are deleted in the EIPAMPlugin-->\r
+                                                <execute plugin="com.att.sdnctl.sli.plugin.eipam.EIPAMPlugin" method="allocateSubnet">\r
+                                                    <outcome value='failure'>\r
+                                                        <return status="failure">\r
+                                                            <parameter name="tmp.eipam-error" value="true" />\r
+                                                            <parameter name="error-code" value="500"/>\r
+                                                            <parameter name="error-message" value="An error occured while allocating V4 subnet in EIPAM." />\r
+                                                        </return>\r
+                                                    </outcome>\r
+                                                </execute>\r
+                                                <get-resource\r
+        plugin='org.onap.ccsdk.sli.adaptors.resource.sql.SqlResource'\r
+        resource='SQL'\r
+        key="SELECT * from EIPAM_IP_POOLS WHERE plan_name = $network-model.eipam-v4-address-plan and level = $eipam-ip-block.level and key_value = $tmp.key-value ; "\r
+        pfx='pfx.eipam-pool-row'>\r
+                                                    <outcome value='failure'>\r
+                                                        <return status="failure">\r
+                                                            <parameter name="tmp.eipam-error" value="true" />\r
+                                                            <parameter name="error-code" value="500"/>\r
+                                                            <parameter name="error-message" value="An error occured while looking for entry in EIPAM_IP_POOLS for V4 subnet in EIPAM." />\r
+                                                        </return>\r
+                                                    </outcome>\r
+                                                    <outcome value="not-found">\r
+                                                        <return status="failure">\r
+                                                            <parameter name="tmp.eipam-error" value="true" />\r
+                                                            <parameter name="error-code" value="500"/>\r
+                                                            <parameter name="error-message" value="An error occured while looking for entry in EIPAM_IP_POOLS for V4 subnet in EIPAM." />\r
+                                                        </return>\r
+                                                    </outcome>\r
+                                                </get-resource>\r
+                                                <switch test="`$network-instance-group-data.subnet-assignment-policy.subnet-use`">\r
+                                                    <outcome value='shared'>\r
+                                                        <save\r
+        plugin='org.onap.ccsdk.sli.adaptors.resource.sql.SqlResource'\r
+        resource='SQL'\r
+        key="INSERT EIPAM_IP_SUBNETS\r
+             SET\r
+             entity_id = $eipam-ip-block.entity-id ,\r
+             service_type = $tmp.service-type ,\r
+             ip_address = $eipam-ip-block.ip-prefix ,\r
+             prefix_length = $eipam-ip-block.mask ,\r
+             plan_name = $network-model.eipam-v4-address-plan ,\r
+             status = 'ACTIVE' ,\r
+             pool_id = $pfx.eipam-pool-row.pool-id ,\r
+             address_family = $network-model.ipv4-ip-version ,\r
+             network_id = $tmp.network-id ,\r
+             network_instance_group_id = $tmp.network-instance-group-id ; "\r
+    force='true'\r
+        pfx='pfx.eipam-v4subnet-row'>\r
+                                                            <outcome value='failure'>\r
+                                                                <return status='failure'>\r
+                                                                    <parameter name='error-code' value='500' />\r
+                                                                    <parameter name='error-message' value='failed to update EIPAM_IP_SUBNETS table.' />\r
+                                                                </return>\r
+                                                            </outcome>\r
+                                                        </save>\r
+                                                    </outcome>\r
+                                                    <outcome value='Other'>\r
+                                                        <save\r
+        plugin='org.onap.ccsdk.sli.adaptors.resource.sql.SqlResource'\r
+        resource='SQL'\r
+        key="INSERT EIPAM_IP_SUBNETS\r
+             SET\r
+             entity_id = $eipam-ip-block.entity-id ,\r
+             service_type = $tmp.service-type ,\r
+             ip_address = $eipam-ip-block.ip-prefix ,\r
+             prefix_length = $eipam-ip-block.mask ,\r
+             plan_name = $network-model.eipam-v4-address-plan ,\r
+             status = 'ACTIVE' ,\r
+             pool_id = $pfx.eipam-pool-row.pool-id ,\r
+             address_family = $network-model.ipv4-ip-version ,\r
+             network_id = $tmp.network-id ; "\r
+    force='true'\r
+        pfx='pfx.eipam-v4subnet-row'>\r
+                                                            <outcome value='failure'>\r
+                                                                <return status='failure'>\r
+                                                                    <parameter name='error-code' value='500' />\r
+                                                                    <parameter name='error-message' value='failed to update EIPAM_IP_SUBNETS table.' />\r
+                                                                </return>\r
+                                                            </outcome>\r
+                                                        </save>\r
+                                                    </outcome>\r
+                                                    <outcome value=''>\r
+                                                        <save\r
+        plugin='org.onap.ccsdk.sli.adaptors.resource.sql.SqlResource'\r
+        resource='SQL'\r
+        key="INSERT EIPAM_IP_SUBNETS\r
+             SET\r
+             entity_id = $eipam-ip-block.entity-id ,\r
+             service_type = $tmp.service-type ,\r
+             ip_address = $eipam-ip-block.ip-prefix ,\r
+             prefix_length = $eipam-ip-block.mask ,\r
+             plan_name = $network-model.eipam-v4-address-plan ,\r
+             status = 'ACTIVE' ,\r
+             pool_id = $pfx.eipam-pool-row.pool-id ,\r
+             address_family = $network-model.ipv4-ip-version ,\r
+             network_id = $tmp.network-id ; "\r
+    force='true'\r
+        pfx='pfx.eipam-v4subnet-row'>\r
+                                                            <outcome value='failure'>\r
+                                                                <return status='failure'>\r
+                                                                    <parameter name='error-code' value='500' />\r
+                                                                    <parameter name='error-message' value='failed to update EIPAM_IP_SUBNETS table.' />\r
+                                                                </return>\r
+                                                            </outcome>\r
+                                                        </save>\r
+                                                    </outcome>\r
+                                                </switch>\r
+                                                <save\r
+        plugin='org.onap.ccsdk.sli.adaptors.resource.sql.SqlResource'\r
+        resource='SQL'\r
+        key="INSERT EIPAM_IP_SUBNET_KEYS\r
+             SET\r
+             entity_id = $eipam-ip-block.entity-id ,\r
+             key_name = $key-name ,\r
+             key_value = $key-value ,\r
+             level = $eipam-ip-block.level ; "\r
+    force='true'\r
+        pfx='pfx.eipam-v4subnet-key-row'>\r
+                                                    <outcome value='failure'>\r
+                                                        <return status='failure'>\r
+                                                            <parameter name='error-code' value='500' />\r
+                                                            <parameter name='error-message' value='failed to update EIPAM_IP_SUBNET_KEYS table.' />\r
+                                                        </return>\r
+                                                    </outcome>\r
+                                                    <outcome value='success'></outcome>\r
+                                                </save>\r
+                                                <record plugin="org.onap.ccsdk.sli.core.sli.recording.Slf4jRecorder">\r
+                                                    <parameter name="logger" value="message-log"/>\r
+                                                    <parameter name="field1" value="__TIMESTAMP__"/>\r
+                                                    <parameter name="field2" value="network-topology-operation"/>\r
+                                                    <parameter name="field3" value="eipam-allocate-generic-subnet"/>\r
+                                                    <parameter name="field4" value="`$network-model.eipam-v4-address-plan`"/>\r
+                                                    <parameter name="field5" value="`$key-value`"/>\r
+                                                    <parameter name="field6" value="`$tmp.eipam-pool-row.pool-id`"/>\r
+                                                    <parameter name="field7" value="`$tmp.network_instance_group_id`"/>\r
+                                                    <parameter name="field8" value="`$eipam-ip-block.level`"/>\r
+                                                    <parameter name="field9" value="`$network-model.network-role`"/>\r
+                                                    <parameter name="field10" value="`$tmp.network-id`"/>\r
+                                                    <parameter name="field11" value="subnet saved to DB."/>\r
+                                                </record>\r
+                                            </block>\r
+                                        </outcome>\r
+                                    </switch>\r
+                                </block>\r
+                            </outcome>\r
+                            <outcome value=''>\r
+                                <return status="failure">\r
+                                    <parameter name="tmp.eipam-error" value="true" />\r
+                                    <parameter name="error-code" value="500"/>\r
+                                    <parameter name="error-message" value="Please set the eipam-ip-block.level for appropriate EIPAM request." />\r
+                                </return>\r
+                            </outcome>\r
+                            <outcome value='Other'>\r
+                                <block atomic='true'>\r
+                                    <!--subnet and subnet_keys are deleted in the EIPAMPlugin-->\r
+                                    <set>\r
+                                        <parameter name="eipam-ip-block.plan-name" value="`$network-model.eipam-v4-address-plan`"/>\r
+                                        <parameter name="eipam-ip-block.activate-subnet-flag" value="`$tmp.activate-subnet-flag`"/>\r
+                                        <parameter name="eipam-ip-block.leaf-level-indicator" value="`$tmp.leaf-level`"/>\r
+                                        <parameter name="tmp.allocate-v4-subnet-flag" value="Y" />\r
+                                        <!-- Number of Pool Levels -->\r
+                                        <parameter name="eipam-ip-block.pools_length" value="`$eipam-ip-block.level`"/>\r
+                                    </set>\r
+                                    <for index="l4-idx" start="0" end="`$eipam-ip-block.level`">\r
+                                        <block atomic='true'>\r
+                                            <!--subnet and subnet_keys are deleted in the EIPAMPlugin-->\r
+                                            <set>\r
+                                                <parameter name="eipam-ip-block.pools[$l4-idx].key-name" value="`$v4FQPN-output.pools[$l4-idx].key-name`"/>\r
+                                                <parameter name="eipam-ip-block.pools[$l4-idx].key-value" value="`$v4FQPN-output.pools[$l4-idx].key-value`"/>\r
+                                            </set>\r
+                                            <record plugin="org.onap.ccsdk.sli.core.sli.recording.Slf4jRecorder">\r
+                                                <parameter name="logger" value="message-log"/>\r
+                                                <parameter name="field1" value="__TIMESTAMP__"/>\r
+                                                <parameter name="field2" value="network-topology-operation"/>\r
+                                                <parameter name="field3" value="eipam-allocate-generic-subnet"/>\r
+                                                <parameter name="field4" value="`$eipam-ip-block.plan-name`"/>\r
+                                                <parameter name="field5" value="`$eipam-ip-block.pools[$l4-idx].key-name`"/>\r
+                                                <parameter name="field6" value="`$eipam-ip-block.pools[$l4-idx].key-value`"/>\r
+                                            </record>\r
+                                        </block>\r
+                                    </for>\r
+                                    <!--subnet and subnet_keys are deleted in the EIPAMPlugin-->\r
+                                    <execute plugin="com.att.sdnctl.sli.plugin.eipam.EIPAMPlugin" method="allocateSubnet">\r
+                                        <outcome value='failure'>\r
+                                            <return status="failure">\r
+                                                <parameter name="tmp.eipam-error" value="true" />\r
+                                                <parameter name="error-code" value="500"/>\r
+                                                <parameter name="error-message" value="An error occured while allocating V4 subnet in EIPAM." />\r
+                                            </return>\r
+                                        </outcome>\r
+                                    </execute>\r
+                                    <get-resource\r
+        plugin='org.onap.ccsdk.sli.adaptors.resource.sql.SqlResource'\r
+        resource='SQL'\r
+        key="SELECT * from EIPAM_IP_POOLS WHERE plan_name = $network-model.eipam-v4-address-plan and level = $eipam-ip-block.level and key_value = $tmp.key-value ; "\r
+        pfx='pfx.eipam-pool-row'>\r
+                                        <outcome value='failure'>\r
+                                            <return status="failure">\r
+                                                <parameter name="tmp.eipam-error" value="true" />\r
+                                                <parameter name="error-code" value="500"/>\r
+                                                <parameter name="error-message" value="An error occured while looking for entry in EIPAM_IP_POOLS for V4 subnet in EIPAM." />\r
+                                            </return>\r
+                                        </outcome>\r
+                                        <outcome value="not-found">\r
+                                            <return status="failure">\r
+                                                <parameter name="tmp.eipam-error" value="true" />\r
+                                                <parameter name="error-code" value="500"/>\r
+                                                <parameter name="error-message" value="An error occured while looking for entry in EIPAM_IP_POOLS for V4 subnet in EIPAM." />\r
+                                            </return>\r
+                                        </outcome>\r
+                                    </get-resource>\r
+                                    <switch test="`$network-instance-group-data.subnet-assignment-policy.subnet-use`">\r
+                                        <outcome value='shared'>\r
+                                            <save\r
+        plugin='org.onap.ccsdk.sli.adaptors.resource.sql.SqlResource'\r
+        resource='SQL'\r
+        key="INSERT EIPAM_IP_SUBNETS\r
+             SET\r
+             entity_id = $eipam-ip-block.entity-id ,\r
+             service_type = $tmp.service-type ,\r
+             ip_address = $eipam-ip-block.ip-prefix ,\r
+             prefix_length = $eipam-ip-block.mask ,\r
+             plan_name = $network-model.eipam-v4-address-plan ,\r
+             status = 'ACTIVE' ,\r
+             pool_id = $pfx.eipam-pool-row.pool-id ,\r
+             address_family = $network-model.ipv4-ip-version ,\r
+             network_id = $tmp.network-id ,\r
+             network_instance_group_id = $tmp.network-instance-group-id ; "\r
+    force='true'\r
+        pfx='pfx.eipam-v4subnet-row'>\r
+                                                <outcome value='failure'>\r
+                                                    <return status='failure'>\r
+                                                        <parameter name='error-code' value='500' />\r
+                                                        <parameter name='error-message' value='failed to update EIPAM_IP_SUBNETS table.' />\r
+                                                    </return>\r
+                                                </outcome>\r
+                                            </save>\r
+                                        </outcome>\r
+                                        <outcome value='Other'>\r
+                                            <save\r
+        plugin='org.onap.ccsdk.sli.adaptors.resource.sql.SqlResource'\r
+        resource='SQL'\r
+        key="INSERT EIPAM_IP_SUBNETS\r
+             SET\r
+             entity_id = $eipam-ip-block.entity-id ,\r
+             service_type = $tmp.service-type ,\r
+             ip_address = $eipam-ip-block.ip-prefix ,\r
+             prefix_length = $eipam-ip-block.mask ,\r
+             plan_name = $network-model.eipam-v4-address-plan ,\r
+             status = 'ACTIVE' ,\r
+             pool_id = $pfx.eipam-pool-row.pool-id ,\r
+             address_family = $network-model.ipv4-ip-version ,\r
+             network_id = $tmp.network-id ; "\r
+    force='true'\r
+        pfx='pfx.eipam-v4subnet-row'>\r
+                                                <outcome value='failure'>\r
+                                                    <return status='failure'>\r
+                                                        <parameter name='error-code' value='500' />\r
+                                                        <parameter name='error-message' value='failed to update EIPAM_IP_SUBNETS table.' />\r
+                                                    </return>\r
+                                                </outcome>\r
+                                            </save>\r
+                                        </outcome>\r
+                                        <outcome value=''>\r
+                                            <save\r
+        plugin='org.onap.ccsdk.sli.adaptors.resource.sql.SqlResource'\r
+        resource='SQL'\r
+        key="INSERT EIPAM_IP_SUBNETS\r
+             SET\r
+             entity_id = $eipam-ip-block.entity-id ,\r
+             service_type = $tmp.service-type ,\r
+             ip_address = $eipam-ip-block.ip-prefix ,\r
+             prefix_length = $eipam-ip-block.mask ,\r
+             plan_name = $network-model.eipam-v4-address-plan ,\r
+             status = 'ACTIVE' ,\r
+             pool_id = $pfx.eipam-pool-row.pool-id ,\r
+             address_family = $network-model.ipv4-ip-version ,\r
+             network_id = $tmp.network-id ; "\r
+    force='true'\r
+        pfx='pfx.eipam-v4subnet-row'>\r
+                                                <outcome value='failure'>\r
+                                                    <return status='failure'>\r
+                                                        <parameter name='error-code' value='500' />\r
+                                                        <parameter name='error-message' value='failed to update EIPAM_IP_SUBNETS table.' />\r
+                                                    </return>\r
+                                                </outcome>\r
+                                            </save>\r
+                                        </outcome>\r
+                                    </switch>\r
+                                    <save\r
+        plugin='org.onap.ccsdk.sli.adaptors.resource.sql.SqlResource'\r
+        resource='SQL'\r
+        key="INSERT EIPAM_IP_SUBNET_KEYS\r
+             SET\r
+             entity_id = $eipam-ip-block.entity-id ,\r
+             key_name = $key-name ,\r
+             key_value = $key-value ,\r
+             level = $eipam-ip-block.level ; "\r
+    force='true'\r
+        pfx='pfx.eipam-v4subnet-key-row'>\r
+                                        <outcome value='failure'>\r
+                                            <return status='failure'>\r
+                                                <parameter name='error-code' value='500' />\r
+                                                <parameter name='error-message' value='failed to update EIPAM_IP_SUBNET_KEYS table.' />\r
+                                            </return>\r
+                                        </outcome>\r
+                                        <outcome value='success'></outcome>\r
+                                    </save>\r
+                                    <record plugin="org.onap.ccsdk.sli.core.sli.recording.Slf4jRecorder">\r
+                                        <parameter name="logger" value="message-log"/>\r
+                                        <parameter name="field1" value="__TIMESTAMP__"/>\r
+                                        <parameter name="field2" value="network-topology-operation"/>\r
+                                        <parameter name="field3" value="eipam-allocate-generic-subnet"/>\r
+                                        <parameter name="field4" value="`$network-model.eipam-v4-address-plan`"/>\r
+                                        <parameter name="field5" value="`$key-value`"/>\r
+                                        <parameter name="field6" value="`$tmp.eipam-pool-row.pool-id`"/>\r
+                                        <parameter name="field7" value="`$tmp.network_instance_group_id`"/>\r
+                                        <parameter name="field8" value="`$eipam-ip-block.level`"/>\r
+                                        <parameter name="field9" value="`$network-model.network-role`"/>\r
+                                        <parameter name="field10" value="`$tmp.network-id`"/>\r
+                                        <parameter name="field11" value="subnet saved to DB."/>\r
+                                    </record>\r
+                                </block>\r
+                            </outcome>\r
+                        </switch>\r
+                    </block>\r
+                </outcome>\r
+                <outcome value='ipv6'>\r
+                    <block atomic='true'>\r
+                        <switch test="`$l-idx`">\r
+                            <outcome value='1'>\r
+                                <block atomic='true'>\r
+                                    <switch test="`$tmp.skip-first-level`">\r
+                                        <outcome value='Y'></outcome>\r
+                                        <outcome value="">\r
+                                            <block atomic='true'>\r
+                                                <!--subnet and subnet_keys are deleted in the EIPAMPlugin-->\r
+                                                <set>\r
+                                                    <parameter name="eipam-ip-block.plan-name" value="`$network-model.eipam-v6-address-plan`"/>\r
+                                                    <parameter name="eipam-ip-block.activate-subnet-flag" value="`$tmp.activate-subnet-flag`"/>\r
+                                                    <parameter name="eipam-ip-block.leaf-level-indicator" value="`$tmp.leaf-level`"/>\r
+                                                    <parameter name="tmp.allocate-v6-subnet-flag" value="Y" />\r
+                                                    <!-- Number of Pool Levels -->\r
+                                                    <parameter name="eipam-ip-block.pools_length" value="`$eipam-ip-block.level`"/>\r
+                                                </set>\r
+                                                <for index="l6-idx" start="0" end="`$eipam-ip-block.level`">\r
+                                                    <block atomic='true'>\r
+                                                        <!--subnet and subnet_keys are deleted in the EIPAMPlugin-->\r
+                                                        <set>\r
+                                                            <parameter name="eipam-ip-block.pools[$l6-idx].key-name" value="`$v6FQPN-output.pools[$l6-idx].key-name`"/>\r
+                                                            <parameter name="eipam-ip-block.pools[$l6-idx].key-value" value="`$v6FQPN-output.pools[$l6-idx].key-value`"/>\r
+                                                        </set>\r
+                                                        <record plugin="org.onap.ccsdk.sli.core.sli.recording.Slf4jRecorder">\r
+                                                            <parameter name="logger" value="message-log"/>\r
+                                                            <parameter name="field1" value="__TIMESTAMP__"/>\r
+                                                            <parameter name="field2" value="network-topology-operation"/>\r
+                                                            <parameter name="field3" value="eipam-allocate-generic-subnet"/>\r
+                                                            <parameter name="field4" value="`$eipam-ip-block.plan-name`"/>\r
+                                                            <parameter name="field5" value="`$eipam-ip-block.pools[$l6-idx].key-name`"/>\r
+                                                            <parameter name="field6" value="`$eipam-ip-block.pools[$l6-idx].key-value`"/>\r
+                                                            <parameter name="field7" value="`$l6-idx`"/>\r
+                                                        </record>\r
+                                                    </block>\r
+                                                </for>\r
+                                                <!--subnet and subnet_keys are deleted in the EIPAMPlugin-->\r
+                                                <execute plugin="com.att.sdnctl.sli.plugin.eipam.EIPAMPlugin" method="allocateSubnet">\r
+                                                    <outcome value='failure'>\r
+                                                        <return status="failure">\r
+                                                            <parameter name="tmp.eipam-error" value="true" />\r
+                                                            <parameter name="error-code" value="500"/>\r
+                                                            <parameter name="error-message" value="An error occured while allocating V6 subnet in EIPAM." />\r
+                                                        </return>\r
+                                                    </outcome>\r
+                                                </execute>\r
+                                                <get-resource\r
+        plugin='org.onap.ccsdk.sli.adaptors.resource.sql.SqlResource'\r
+        resource='SQL'\r
+        key="SELECT * from EIPAM_IP_POOLS WHERE plan_name = $network-model.eipam-v6-address-plan and level = $eipam-ip-block.level and key_value = $tmp.key-value ; "\r
+        pfx='pfx.eipam-pool-row'>\r
+                                                    <outcome value='failure'>\r
+                                                        <return status="failure">\r
+                                                            <parameter name="tmp.eipam-error" value="true" />\r
+                                                            <parameter name="error-code" value="500"/>\r
+                                                            <parameter name="error-message" value="An error occured while looking for entry in EIPAM_IP_POOLS for V6 subnet in EIPAM." />\r
+                                                        </return>\r
+                                                    </outcome>\r
+                                                    <outcome value="not-found">\r
+                                                        <return status="failure">\r
+                                                            <parameter name="tmp.eipam-error" value="true" />\r
+                                                            <parameter name="error-code" value="500"/>\r
+                                                            <parameter name="error-message" value="An error occured while looking for entry in EIPAM_IP_POOLS for V6 subnet in EIPAM." />\r
+                                                        </return>\r
+                                                    </outcome>\r
+                                                </get-resource>\r
+                                                <switch test="`$network-instance-group-data.subnet-assignment-policy.subnet-use`">\r
+                                                    <outcome value='shared'>\r
+                                                        <save\r
+        plugin='org.onap.ccsdk.sli.adaptors.resource.sql.SqlResource'\r
+        resource='SQL'\r
+        key="INSERT EIPAM_IP_SUBNETS\r
+             SET\r
+             entity_id = $eipam-ip-block.entity-id ,\r
+             service_type = $tmp.service-type ,\r
+             ip_address = $eipam-ip-block.ip-prefix ,\r
+             prefix_length = $eipam-ip-block.mask ,\r
+             plan_name = $network-model.eipam-v6-address-plan ,\r
+             status = 'ACTIVE' ,\r
+             pool_id = $pfx.eipam-pool-row.pool-id ,\r
+             address_family = $network-model.ipv6-ip-version ,\r
+             network_id = $tmp.network-id ,\r
+             network_instance_group_id = $tmp.network-instance-group-id ; "\r
+    force='true'\r
+        pfx='pfx.eipam-v6subnet-row'>\r
+                                                            <outcome value='failure'>\r
+                                                                <return status='failure'>\r
+                                                                    <parameter name='error-code' value='500' />\r
+                                                                    <parameter name='error-message' value='failed to update EIPAM_IP_SUBNETS table.' />\r
+                                                                </return>\r
+                                                            </outcome>\r
+                                                        </save>\r
+                                                    </outcome>\r
+                                                    <outcome value='Other'>\r
+                                                        <save\r
+        plugin='org.onap.ccsdk.sli.adaptors.resource.sql.SqlResource'\r
+        resource='SQL'\r
+        key="INSERT EIPAM_IP_SUBNETS\r
+             SET\r
+             entity_id = $eipam-ip-block.entity-id ,\r
+             service_type = $tmp.service-type ,\r
+             ip_address = $eipam-ip-block.ip-prefix ,\r
+             prefix_length = $eipam-ip-block.mask ,\r
+             plan_name = $network-model.eipam-v6-address-plan ,\r
+             status = 'ACTIVE' ,\r
+             pool_id = $pfx.eipam-pool-row.pool-id ,\r
+             address_family = $network-model.ipv6-ip-version ,\r
+             network_id = $tmp.network-id ; "\r
+    force='true'\r
+        pfx='pfx.eipam-v6subnet-row'>\r
+                                                            <outcome value='failure'>\r
+                                                                <return status='failure'>\r
+                                                                    <parameter name='error-code' value='500' />\r
+                                                                    <parameter name='error-message' value='failed to update EIPAM_IP_SUBNETS table.' />\r
+                                                                </return>\r
+                                                            </outcome>\r
+                                                        </save>\r
+                                                    </outcome>\r
+                                                    <outcome value=''>\r
+                                                        <save\r
+        plugin='org.onap.ccsdk.sli.adaptors.resource.sql.SqlResource'\r
+        resource='SQL'\r
+        key="INSERT EIPAM_IP_SUBNETS\r
+             SET\r
+             entity_id = $eipam-ip-block.entity-id ,\r
+             service_type = $tmp.service-type ,\r
+             ip_address = $eipam-ip-block.ip-prefix ,\r
+             prefix_length = $eipam-ip-block.mask ,\r
+             plan_name = $network-model.eipam-v6-address-plan ,\r
+             status = 'ACTIVE' ,\r
+             pool_id = $pfx.eipam-pool-row.pool-id ,\r
+             address_family = $network-model.ipv6-ip-version ,\r
+             network_id = $tmp.network-id ; "\r
+    force='true'\r
+        pfx='pfx.eipam-v6subnet-row'>\r
+                                                            <outcome value='failure'>\r
+                                                                <return status='failure'>\r
+                                                                    <parameter name='error-code' value='500' />\r
+                                                                    <parameter name='error-message' value='failed to update EIPAM_IP_SUBNETS table.' />\r
+                                                                </return>\r
+                                                            </outcome>\r
+                                                        </save>\r
+                                                    </outcome>\r
+                                                </switch>\r
+                                                <save\r
+        plugin='org.onap.ccsdk.sli.adaptors.resource.sql.SqlResource'\r
+        resource='SQL'\r
+        key="INSERT EIPAM_IP_SUBNET_KEYS\r
+             SET\r
+             entity_id = $eipam-ip-block.entity-id ,\r
+             key_name = $key-name ,\r
+             key_value = $key-value ,\r
+             level = $eipam-ip-block.level ; "\r
+    force='true'\r
+        pfx='pfx.eipam-v6subnet-key-row'>\r
+                                                    <outcome value='failure'>\r
+                                                        <return status='failure'>\r
+                                                            <parameter name='error-code' value='500' />\r
+                                                            <parameter name='error-message' value='failed to update EIPAM_IP_SUBNET_KEYS table.' />\r
+                                                        </return>\r
+                                                    </outcome>\r
+                                                    <outcome value='success'></outcome>\r
+                                                </save>\r
+                                                <record plugin="org.onap.ccsdk.sli.core.sli.recording.Slf4jRecorder">\r
+                                                    <parameter name="logger" value="message-log"/>\r
+                                                    <parameter name="field1" value="__TIMESTAMP__"/>\r
+                                                    <parameter name="field2" value="network-topology-operation"/>\r
+                                                    <parameter name="field3" value="eipam-allocate-generic-subnet"/>\r
+                                                    <parameter name="field4" value="`$network-model.eipam-v6-address-plan`"/>\r
+                                                    <parameter name="field5" value="`$key-value`"/>\r
+                                                    <parameter name="field6" value="`$tmp.eipam-pool-row.pool-id`"/>\r
+                                                    <parameter name="field7" value="`$tmp.network_instance_group_id`"/>\r
+                                                    <parameter name="field8" value="`$eipam-ip-block.level`"/>\r
+                                                    <parameter name="field9" value="`$network-model.network-role`"/>\r
+                                                    <parameter name="field10" value="`$tmp.network-id`"/>\r
+                                                    <parameter name="field11" value="subnet info are saved to DB."/>\r
+                                                </record>\r
+                                            </block>\r
+                                        </outcome>\r
+                                        <outcome value='N'>\r
+                                            <block atomic='true'>\r
+                                                <!--subnet and subnet_keys are deleted in the EIPAMPlugin-->\r
+                                                <set>\r
+                                                    <parameter name="eipam-ip-block.plan-name" value="`$network-model.eipam-v6-address-plan`"/>\r
+                                                    <parameter name="eipam-ip-block.activate-subnet-flag" value="`$tmp.activate-subnet-flag`"/>\r
+                                                    <parameter name="eipam-ip-block.leaf-level-indicator" value="`$tmp.leaf-level`"/>\r
+                                                    <parameter name="tmp.allocate-v6-subnet-flag" value="Y" />\r
+                                                    <!-- Number of Pool Levels -->\r
+                                                    <parameter name="eipam-ip-block.pools_length" value="`$eipam-ip-block.level`"/>\r
+                                                </set>\r
+                                                <for index="l6-idx" start="0" end="`$eipam-ip-block.level`">\r
+                                                    <block atomic='true'>\r
+                                                        <!--subnet and subnet_keys are deleted in the EIPAMPlugin-->\r
+                                                        <set>\r
+                                                            <parameter name="eipam-ip-block.pools[$l6-idx].key-name" value="`$v6FQPN-output.pools[$l6-idx].key-name`"/>\r
+                                                            <parameter name="eipam-ip-block.pools[$l6-idx].key-value" value="`$v6FQPN-output.pools[$l6-idx].key-value`"/>\r
+                                                        </set>\r
+                                                        <record plugin="org.onap.ccsdk.sli.core.sli.recording.Slf4jRecorder">\r
+                                                            <parameter name="logger" value="message-log"/>\r
+                                                            <parameter name="field1" value="__TIMESTAMP__"/>\r
+                                                            <parameter name="field2" value="network-topology-operation"/>\r
+                                                            <parameter name="field3" value="eipam-allocate-generic-subnet"/>\r
+                                                            <parameter name="field4" value="`$eipam-ip-block.plan-name`"/>\r
+                                                            <parameter name="field5" value="`$eipam-ip-block.pools[$l6-idx].key-name`"/>\r
+                                                            <parameter name="field6" value="`$eipam-ip-block.pools[$l6-idx].key-value`"/>\r
+                                                            <parameter name="field7" value="`$l6-idx`"/>\r
+                                                        </record>\r
+                                                    </block>\r
+                                                </for>\r
+                                                <!--subnet and subnet_keys are deleted in the EIPAMPlugin-->\r
+                                                <execute plugin="com.att.sdnctl.sli.plugin.eipam.EIPAMPlugin" method="allocateSubnet">\r
+                                                    <outcome value='failure'>\r
+                                                        <return status="failure">\r
+                                                            <parameter name="tmp.eipam-error" value="true" />\r
+                                                            <parameter name="error-code" value="500"/>\r
+                                                            <parameter name="error-message" value="An error occured while allocating V6 subnet in EIPAM." />\r
+                                                        </return>\r
+                                                    </outcome>\r
+                                                </execute>\r
+                                                <get-resource\r
+        plugin='org.onap.ccsdk.sli.adaptors.resource.sql.SqlResource'\r
+        resource='SQL'\r
+        key="SELECT * from EIPAM_IP_POOLS WHERE plan_name = $network-model.eipam-v6-address-plan and level = $eipam-ip-block.level and key_value = $tmp.key-value ; "\r
+        pfx='pfx.eipam-pool-row'>\r
+                                                    <outcome value='failure'>\r
+                                                        <return status="failure">\r
+                                                            <parameter name="tmp.eipam-error" value="true" />\r
+                                                            <parameter name="error-code" value="500"/>\r
+                                                            <parameter name="error-message" value="An error occured while looking for entry in EIPAM_IP_POOLS for V6 subnet in EIPAM." />\r
+                                                        </return>\r
+                                                    </outcome>\r
+                                                    <outcome value="not-found">\r
+                                                        <return status="failure">\r
+                                                            <parameter name="tmp.eipam-error" value="true" />\r
+                                                            <parameter name="error-code" value="500"/>\r
+                                                            <parameter name="error-message" value="An error occured while looking for entry in EIPAM_IP_POOLS for V6 subnet in EIPAM." />\r
+                                                        </return>\r
+                                                    </outcome>\r
+                                                </get-resource>\r
+                                                <switch test="`$network-instance-group-data.subnet-assignment-policy.subnet-use`">\r
+                                                    <outcome value='shared'>\r
+                                                        <save\r
+        plugin='org.onap.ccsdk.sli.adaptors.resource.sql.SqlResource'\r
+        resource='SQL'\r
+        key="INSERT EIPAM_IP_SUBNETS\r
+             SET\r
+             entity_id = $eipam-ip-block.entity-id ,\r
+             service_type = $tmp.service-type ,\r
+             ip_address = $eipam-ip-block.ip-prefix ,\r
+             prefix_length = $eipam-ip-block.mask ,\r
+             plan_name = $network-model.eipam-v6-address-plan ,\r
+             status = 'ACTIVE' ,\r
+             pool_id = $pfx.eipam-pool-row.pool-id ,\r
+             address_family = $network-model.ipv6-ip-version ,\r
+             network_id = $tmp.network-id ,\r
+             network_instance_group_id = $tmp.network-instance-group-id ; "\r
+    force='true'\r
+        pfx='pfx.eipam-v6subnet-row'>\r
+                                                            <outcome value='failure'>\r
+                                                                <return status='failure'>\r
+                                                                    <parameter name='error-code' value='500' />\r
+                                                                    <parameter name='error-message' value='failed to update EIPAM_IP_SUBNETS table.' />\r
+                                                                </return>\r
+                                                            </outcome>\r
+                                                        </save>\r
+                                                    </outcome>\r
+                                                    <outcome value='Other'>\r
+                                                        <save\r
+        plugin='org.onap.ccsdk.sli.adaptors.resource.sql.SqlResource'\r
+        resource='SQL'\r
+        key="INSERT EIPAM_IP_SUBNETS\r
+             SET\r
+             entity_id = $eipam-ip-block.entity-id ,\r
+             service_type = $tmp.service-type ,\r
+             ip_address = $eipam-ip-block.ip-prefix ,\r
+             prefix_length = $eipam-ip-block.mask ,\r
+             plan_name = $network-model.eipam-v6-address-plan ,\r
+             status = 'ACTIVE' ,\r
+             pool_id = $pfx.eipam-pool-row.pool-id ,\r
+             address_family = $network-model.ipv6-ip-version ,\r
+             network_id = $tmp.network-id ; "\r
+    force='true'\r
+        pfx='pfx.eipam-v6subnet-row'>\r
+                                                            <outcome value='failure'>\r
+                                                                <return status='failure'>\r
+                                                                    <parameter name='error-code' value='500' />\r
+                                                                    <parameter name='error-message' value='failed to update EIPAM_IP_SUBNETS table.' />\r
+                                                                </return>\r
+                                                            </outcome>\r
+                                                        </save>\r
+                                                    </outcome>\r
+                                                    <outcome value=''>\r
+                                                        <save\r
+        plugin='org.onap.ccsdk.sli.adaptors.resource.sql.SqlResource'\r
+        resource='SQL'\r
+        key="INSERT EIPAM_IP_SUBNETS\r
+             SET\r
+             entity_id = $eipam-ip-block.entity-id ,\r
+             service_type = $tmp.service-type ,\r
+             ip_address = $eipam-ip-block.ip-prefix ,\r
+             prefix_length = $eipam-ip-block.mask ,\r
+             plan_name = $network-model.eipam-v6-address-plan ,\r
+             status = 'ACTIVE' ,\r
+             pool_id = $pfx.eipam-pool-row.pool-id ,\r
+             address_family = $network-model.ipv6-ip-version ,\r
+             network_id = $tmp.network-id ; "\r
+    force='true'\r
+        pfx='pfx.eipam-v6subnet-row'>\r
+                                                            <outcome value='failure'>\r
+                                                                <return status='failure'>\r
+                                                                    <parameter name='error-code' value='500' />\r
+                                                                    <parameter name='error-message' value='failed to update EIPAM_IP_SUBNETS table.' />\r
+                                                                </return>\r
+                                                            </outcome>\r
+                                                        </save>\r
+                                                    </outcome>\r
+                                                </switch>\r
+                                                <save\r
+        plugin='org.onap.ccsdk.sli.adaptors.resource.sql.SqlResource'\r
+        resource='SQL'\r
+        key="INSERT EIPAM_IP_SUBNET_KEYS\r
+             SET\r
+             entity_id = $eipam-ip-block.entity-id ,\r
+             key_name = $key-name ,\r
+             key_value = $key-value ,\r
+             level = $eipam-ip-block.level ; "\r
+    force='true'\r
+        pfx='pfx.eipam-v6subnet-key-row'>\r
+                                                    <outcome value='failure'>\r
+                                                        <return status='failure'>\r
+                                                            <parameter name='error-code' value='500' />\r
+                                                            <parameter name='error-message' value='failed to update EIPAM_IP_SUBNET_KEYS table.' />\r
+                                                        </return>\r
+                                                    </outcome>\r
+                                                    <outcome value='success'></outcome>\r
+                                                </save>\r
+                                                <record plugin="org.onap.ccsdk.sli.core.sli.recording.Slf4jRecorder">\r
+                                                    <parameter name="logger" value="message-log"/>\r
+                                                    <parameter name="field1" value="__TIMESTAMP__"/>\r
+                                                    <parameter name="field2" value="network-topology-operation"/>\r
+                                                    <parameter name="field3" value="eipam-allocate-generic-subnet"/>\r
+                                                    <parameter name="field4" value="`$network-model.eipam-v6-address-plan`"/>\r
+                                                    <parameter name="field5" value="`$key-value`"/>\r
+                                                    <parameter name="field6" value="`$tmp.eipam-pool-row.pool-id`"/>\r
+                                                    <parameter name="field7" value="`$tmp.network_instance_group_id`"/>\r
+                                                    <parameter name="field8" value="`$eipam-ip-block.level`"/>\r
+                                                    <parameter name="field9" value="`$network-model.network-role`"/>\r
+                                                    <parameter name="field10" value="`$tmp.network-id`"/>\r
+                                                    <parameter name="field11" value="subnet info are saved to DB."/>\r
+                                                </record>\r
+                                            </block>\r
+                                        </outcome>\r
+                                    </switch>\r
+                                </block>\r
+                            </outcome>\r
+                            <outcome value=''>\r
+                                <return status="failure">\r
+                                    <parameter name="tmp.eipam-error" value="true" />\r
+                                    <parameter name="error-code" value="500"/>\r
+                                    <parameter name="error-message" value="Please set the eipam-ip-block.level for appropriate EIPAM request." />\r
+                                </return>\r
+                            </outcome>\r
+                            <outcome value='Other'>\r
+                                <block atomic='true'>\r
+                                    <!--subnet and subnet_keys are deleted in the EIPAMPlugin-->\r
+                                    <set>\r
+                                        <parameter name="eipam-ip-block.plan-name" value="`$network-model.eipam-v6-address-plan`"/>\r
+                                        <parameter name="eipam-ip-block.activate-subnet-flag" value="`$tmp.activate-subnet-flag`"/>\r
+                                        <parameter name="eipam-ip-block.leaf-level-indicator" value="`$tmp.leaf-level`"/>\r
+                                        <parameter name="tmp.allocate-v6-subnet-flag" value="Y" />\r
+                                        <!-- Number of Pool Levels -->\r
+                                        <parameter name="eipam-ip-block.pools_length" value="`$eipam-ip-block.level`"/>\r
+                                    </set>\r
+                                    <for index="l6-idx" start="0" end="`$eipam-ip-block.level`">\r
+                                        <block atomic='true'>\r
+                                            <!--subnet and subnet_keys are deleted in the EIPAMPlugin-->\r
+                                            <set>\r
+                                                <parameter name="eipam-ip-block.pools[$l6-idx].key-name" value="`$v6FQPN-output.pools[$l6-idx].key-name`"/>\r
+                                                <parameter name="eipam-ip-block.pools[$l6-idx].key-value" value="`$v6FQPN-output.pools[$l6-idx].key-value`"/>\r
+                                            </set>\r
+                                            <record plugin="org.onap.ccsdk.sli.core.sli.recording.Slf4jRecorder">\r
+                                                <parameter name="logger" value="message-log"/>\r
+                                                <parameter name="field1" value="__TIMESTAMP__"/>\r
+                                                <parameter name="field2" value="network-topology-operation"/>\r
+                                                <parameter name="field3" value="eipam-allocate-generic-subnet"/>\r
+                                                <parameter name="field4" value="`$eipam-ip-block.plan-name`"/>\r
+                                                <parameter name="field5" value="`$eipam-ip-block.pools[$l6-idx].key-name`"/>\r
+                                                <parameter name="field6" value="`$eipam-ip-block.pools[$l6-idx].key-value`"/>\r
+                                                <parameter name="field7" value="`$l6-idx`"/>\r
+                                            </record>\r
+                                        </block>\r
+                                    </for>\r
+                                    <!--subnet and subnet_keys are deleted in the EIPAMPlugin-->\r
+                                    <execute plugin="com.att.sdnctl.sli.plugin.eipam.EIPAMPlugin" method="allocateSubnet">\r
+                                        <outcome value='failure'>\r
+                                            <return status="failure">\r
+                                                <parameter name="tmp.eipam-error" value="true" />\r
+                                                <parameter name="error-code" value="500"/>\r
+                                                <parameter name="error-message" value="An error occured while allocating V6 subnet in EIPAM." />\r
+                                            </return>\r
+                                        </outcome>\r
+                                    </execute>\r
+                                    <get-resource\r
+        plugin='org.onap.ccsdk.sli.adaptors.resource.sql.SqlResource'\r
+        resource='SQL'\r
+        key="SELECT * from EIPAM_IP_POOLS WHERE plan_name = $network-model.eipam-v6-address-plan and level = $eipam-ip-block.level and key_value = $tmp.key-value ; "\r
+        pfx='pfx.eipam-pool-row'>\r
+                                        <outcome value='failure'>\r
+                                            <return status="failure">\r
+                                                <parameter name="tmp.eipam-error" value="true" />\r
+                                                <parameter name="error-code" value="500"/>\r
+                                                <parameter name="error-message" value="An error occured while looking for entry in EIPAM_IP_POOLS for V6 subnet in EIPAM." />\r
+                                            </return>\r
+                                        </outcome>\r
+                                        <outcome value="not-found">\r
+                                            <return status="failure">\r
+                                                <parameter name="tmp.eipam-error" value="true" />\r
+                                                <parameter name="error-code" value="500"/>\r
+                                                <parameter name="error-message" value="An error occured while looking for entry in EIPAM_IP_POOLS for V6 subnet in EIPAM." />\r
+                                            </return>\r
+                                        </outcome>\r
+                                    </get-resource>\r
+                                    <switch test="`$network-instance-group-data.subnet-assignment-policy.subnet-use`">\r
+                                        <outcome value='shared'>\r
+                                            <save\r
+        plugin='org.onap.ccsdk.sli.adaptors.resource.sql.SqlResource'\r
+        resource='SQL'\r
+        key="INSERT EIPAM_IP_SUBNETS\r
+             SET\r
+             entity_id = $eipam-ip-block.entity-id ,\r
+             service_type = $tmp.service-type ,\r
+             ip_address = $eipam-ip-block.ip-prefix ,\r
+             prefix_length = $eipam-ip-block.mask ,\r
+             plan_name = $network-model.eipam-v6-address-plan ,\r
+             status = 'ACTIVE' ,\r
+             pool_id = $pfx.eipam-pool-row.pool-id ,\r
+             address_family = $network-model.ipv6-ip-version ,\r
+             network_id = $tmp.network-id ,\r
+             network_instance_group_id = $tmp.network-instance-group-id ; "\r
+    force='true'\r
+        pfx='pfx.eipam-v6subnet-row'>\r
+                                                <outcome value='failure'>\r
+                                                    <return status='failure'>\r
+                                                        <parameter name='error-code' value='500' />\r
+                                                        <parameter name='error-message' value='failed to update EIPAM_IP_SUBNETS table.' />\r
+                                                    </return>\r
+                                                </outcome>\r
+                                            </save>\r
+                                        </outcome>\r
+                                        <outcome value='Other'>\r
+                                            <save\r
+        plugin='org.onap.ccsdk.sli.adaptors.resource.sql.SqlResource'\r
+        resource='SQL'\r
+        key="INSERT EIPAM_IP_SUBNETS\r
+             SET\r
+             entity_id = $eipam-ip-block.entity-id ,\r
+             service_type = $tmp.service-type ,\r
+             ip_address = $eipam-ip-block.ip-prefix ,\r
+             prefix_length = $eipam-ip-block.mask ,\r
+             plan_name = $network-model.eipam-v6-address-plan ,\r
+             status = 'ACTIVE' ,\r
+             pool_id = $pfx.eipam-pool-row.pool-id ,\r
+             address_family = $network-model.ipv6-ip-version ,\r
+             network_id = $tmp.network-id ; "\r
+    force='true'\r
+        pfx='pfx.eipam-v6subnet-row'>\r
+                                                <outcome value='failure'>\r
+                                                    <return status='failure'>\r
+                                                        <parameter name='error-code' value='500' />\r
+                                                        <parameter name='error-message' value='failed to update EIPAM_IP_SUBNETS table.' />\r
+                                                    </return>\r
+                                                </outcome>\r
+                                            </save>\r
+                                        </outcome>\r
+                                        <outcome value=''>\r
+                                            <save\r
+        plugin='org.onap.ccsdk.sli.adaptors.resource.sql.SqlResource'\r
+        resource='SQL'\r
+        key="INSERT EIPAM_IP_SUBNETS\r
+             SET\r
+             entity_id = $eipam-ip-block.entity-id ,\r
+             service_type = $tmp.service-type ,\r
+             ip_address = $eipam-ip-block.ip-prefix ,\r
+             prefix_length = $eipam-ip-block.mask ,\r
+             plan_name = $network-model.eipam-v6-address-plan ,\r
+             status = 'ACTIVE' ,\r
+             pool_id = $pfx.eipam-pool-row.pool-id ,\r
+             address_family = $network-model.ipv6-ip-version ,\r
+             network_id = $tmp.network-id ; "\r
+    force='true'\r
+        pfx='pfx.eipam-v6subnet-row'>\r
+                                                <outcome value='failure'>\r
+                                                    <return status='failure'>\r
+                                                        <parameter name='error-code' value='500' />\r
+                                                        <parameter name='error-message' value='failed to update EIPAM_IP_SUBNETS table.' />\r
+                                                    </return>\r
+                                                </outcome>\r
+                                            </save>\r
+                                        </outcome>\r
+                                    </switch>\r
+                                    <save\r
+        plugin='org.onap.ccsdk.sli.adaptors.resource.sql.SqlResource'\r
+        resource='SQL'\r
+        key="INSERT EIPAM_IP_SUBNET_KEYS\r
+             SET\r
+             entity_id = $eipam-ip-block.entity-id ,\r
+             key_name = $key-name ,\r
+             key_value = $key-value ,\r
+             level = $eipam-ip-block.level ; "\r
+    force='true'\r
+        pfx='pfx.eipam-v6subnet-key-row'>\r
+                                        <outcome value='failure'>\r
+                                            <return status='failure'>\r
+                                                <parameter name='error-code' value='500' />\r
+                                                <parameter name='error-message' value='failed to update EIPAM_IP_SUBNET_KEYS table.' />\r
+                                            </return>\r
+                                        </outcome>\r
+                                        <outcome value='success'></outcome>\r
+                                    </save>\r
+                                    <record plugin="org.onap.ccsdk.sli.core.sli.recording.Slf4jRecorder">\r
+                                        <parameter name="logger" value="message-log"/>\r
+                                        <parameter name="field1" value="__TIMESTAMP__"/>\r
+                                        <parameter name="field2" value="network-topology-operation"/>\r
+                                        <parameter name="field3" value="eipam-allocate-generic-subnet"/>\r
+                                        <parameter name="field4" value="`$network-model.eipam-v6-address-plan`"/>\r
+                                        <parameter name="field5" value="`$key-value`"/>\r
+                                        <parameter name="field6" value="`$tmp.eipam-pool-row.pool-id`"/>\r
+                                        <parameter name="field7" value="`$tmp.network_instance_group_id`"/>\r
+                                        <parameter name="field8" value="`$eipam-ip-block.level`"/>\r
+                                        <parameter name="field9" value="`$network-model.network-role`"/>\r
+                                        <parameter name="field10" value="`$tmp.network-id`"/>\r
+                                        <parameter name="field11" value="subnet info are saved to DB."/>\r
+                                    </record>\r
+                                </block>\r
+                            </outcome>\r
+                        </switch>\r
+                    </block>\r
+                </outcome>\r
+                <outcome value=''>\r
+                    <return status="failure">\r
+                        <parameter name="tmp.eipam-error" value="true" />\r
+                        <parameter name="error-code" value="500"/>\r
+                        <parameter name="error-message" value="Please set the eipam-ip-block.allocate-version for appropriate EIPAM request." />\r
+                    </return>\r
+                </outcome>\r
+            </switch>\r
+            <return status='success'>\r
+                <parameter name="error-code" value="200" />\r
+            </return>\r
+        </block>\r
+    </method>\r
+</service-logic>
\ No newline at end of file