<service-logic
    xmlns='http://www.onap.org/sdnc/svclogic'
    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}'>
    <method rpc='eipam-create-generic-pool' mode='sync'>
        <block atomic='true'>
            <set>
                <parameter name="tmp.eipam-error" value="false" />
                <parameter name="tmp.create-v4-pool-flag" value="N" />
                <parameter name="tmp.create-v6-pool-flag" value="N" />
                <parameter name='eipam-ip-block.plans_length' value='0' />
                <parameter name="eipam-pool.v4.pre-existing" value="N"/>
                <parameter name="eipam-pool.v6.pre-existing" value="N"/>
                <parameter name="level" value="`$eipam-ip-block.level - 1`" />
            </set>
            <switch test="`$tmp.allocate-subnet-flag`">
                <outcome value="">
                    <block atomic='true'>
                        <!--subnet and subnet_keys are deleted in the EIPAMPlugin-->
                        <set>
                            <parameter name="tmp.allocate-subnet-flag" value="Y"/>
                        </set>
                    </block>
                </outcome>
                <outcome value='Y'></outcome>
                <outcome value='N'></outcome>
            </switch>
            <switch test="`$network-model.use-ipv4`">
                <outcome value='Y'>
                    <block atomic='true'>
                        <get-resource
        plugin='org.onap.ccsdk.sli.adaptors.resource.sql.SqlResource'
        resource='SQL'
        key="SELECT * FROM EIPAM_IP_POOLS where plan_name = $network-model.eipam-v4-address-plan and level = $eipam-ip-block.level and key_value = $v4FQPN-output.pools[$level].key-value ;"
        pfx='tmp.eipam-pool-row'>
                            <outcome value='failure'>
                                <return status="failure">
                                    <parameter name="tmp.eipam-error" value="true" />
                                    <parameter name="error-code" value="500"/>
                                    <parameter name="error-message" value="Query to DB table EIPAM_IP_POOLS failed." />
                                </return>
                            </outcome>
                            <outcome value='success'>
                                <block atomic='true'>
                                    <record plugin="org.onap.ccsdk.sli.core.sli.recording.Slf4jRecorder">
                                        <parameter name="logger" value="message-log"/>
                                        <parameter name="field1" value="__TIMESTAMP__"/>
                                        <parameter name="field2" value="network-topology-operation"/>
                                        <parameter name="field3" value="eipam-create-generic-pool"/>
                                        <parameter name="field4" value="`$network-model.eipam-v4-address-plan`"/>
                                        <parameter name="field5" value="`$v4FQPN-output.pools[$eipam-ip-block.level - 1].key-value`"/>
                                        <parameter name="field6" value="Level already exists, SKIP."/>
                                        <parameter name="field7" value="`$eipam-ip-block.level`"/>
                                        <parameter name="field8" value="`$tmp.eipam-pool-row.pool-id`"/>
                                    </record>
                                    <set>
                                        <parameter name="eipam-pool.v4.pre-existing" value="Y"/>
                                    </set>
                                </block>
                            </outcome>
                            <outcome value="not-found">
                                <switch test="`$l-idx`">
                                    <outcome value='1'>
                                        <block atomic='true'>
                                            <switch test="`$tmp.qip-pool`">
                                                <outcome value=""></outcome>
                                                <outcome value='Other'>
                                                    <!--subnet and subnet_keys are deleted in the EIPAMPlugin-->
                                                    <set>
                                                        <parameter name="eipam-ip-block.plans[$eipam-ip-block.plans_length].parent-pool" value="`$tmp.qip-pool`"/>
                                                        <parameter name="tmp.v4-qip-pool" value="`$tmp.qip-pool`" />
                                                    </set>
                                                </outcome>
                                            </switch>
                                            <switch test="`$tmp.skip-first-level`">
                                                <outcome value='Y'></outcome>
                                                <outcome value="">
                                                    <block atomic='true'>
                                                        <!--subnet and subnet_keys are deleted in the EIPAMPlugin-->
                                                        <set>
                                                            <parameter name="network-topology-identifier-structure.eipam-v4-address-plan" value="`$network-model.eipam-v4-address-plan`"/>
                                                            <parameter name="eipam-ip-block.plans[$eipam-ip-block.plans_length].plan-name" value="`$network-model.eipam-v4-address-plan`"/>
                                                            <parameter name="eipam-ip-block.plans[$eipam-ip-block.plans_length].requests_length" value="1"/>
                                                            <parameter name="eipam-ip-block.plans[$eipam-ip-block.plans_length].allocate-subnet-flag" value="`$tmp.allocate-subnet-flag`"/>
                                                            <!-- Number of Pool Levels -->
                                                            <parameter name="eipam-ip-block.plans[$eipam-ip-block.plans_length].requests[0].pools_length" value="`$eipam-ip-block.level`"/>
                                                        </set>
                                                        <!--subnet and subnet_keys are deleted in the EIPAMPlugin-->
                                                        <set>
                                                            <parameter name="tmp.create-v4-pool-flag" value="Y" />
                                                        </set>
                                                        <for index="l4-idx" start="0" end="`$eipam-ip-block.level`">
                                                            <block atomic='true'>
                                                                <!--subnet and subnet_keys are deleted in the EIPAMPlugin-->
                                                                <set>
                                                                    <parameter name="eipam-ip-block.plans[$eipam-ip-block.plans_length].requests[0].pools[$l4-idx].key-name" value="`$v4FQPN-output.pools[$l4-idx].key-name`"/>
                                                                    <parameter name="eipam-ip-block.plans[$eipam-ip-block.plans_length].requests[0].pools[$l4-idx].key-value" value="`$v4FQPN-output.pools[$l4-idx].key-value`"/>
                                                                </set>
                                                                <record plugin="org.onap.ccsdk.sli.core.sli.recording.Slf4jRecorder">
                                                                    <parameter name="logger" value="message-log"/>
                                                                    <parameter name="field1" value="__TIMESTAMP__"/>
                                                                    <parameter name="field2" value="network-topology-operation"/>
                                                                    <parameter name="field3" value="eipam-create-generic-pool"/>
                                                                    <parameter name="field4" value="`$eipam-ip-block.plans[$eipam-ip-block.plans_length].plan-name`"/>
                                                                    <parameter name="field5" value="`$eipam-ip-block.plans[$eipam-ip-block.plans_length].requests[0].pools[$l4-idx].key-name`"/>
                                                                    <parameter name="field6" value="`$eipam-ip-block.plans[$eipam-ip-block.plans_length].requests[0].pools[$l4-idx].key-value`"/>
                                                                </record>
                                                            </block>
                                                        </for>
                                                        <set>
                                                            <parameter name="eipam-ip-block.plans_length" value="`$eipam-ip-block.plans_length + 1`" />
                                                        </set>
                                                    </block>
                                                </outcome>
                                                <outcome value='N'>
                                                    <block atomic='true'>
                                                        <!--subnet and subnet_keys are deleted in the EIPAMPlugin-->
                                                        <set>
                                                            <parameter name="network-topology-identifier-structure.eipam-v4-address-plan" value="`$network-model.eipam-v4-address-plan`"/>
                                                            <parameter name="eipam-ip-block.plans[$eipam-ip-block.plans_length].plan-name" value="`$network-model.eipam-v4-address-plan`"/>
                                                            <parameter name="eipam-ip-block.plans[$eipam-ip-block.plans_length].requests_length" value="1"/>
                                                            <parameter name="eipam-ip-block.plans[$eipam-ip-block.plans_length].allocate-subnet-flag" value="`$tmp.allocate-subnet-flag`"/>
                                                            <!-- Number of Pool Levels -->
                                                            <parameter name="eipam-ip-block.plans[$eipam-ip-block.plans_length].requests[0].pools_length" value="`$eipam-ip-block.level`"/>
                                                        </set>
                                                        <!--subnet and subnet_keys are deleted in the EIPAMPlugin-->
                                                        <set>
                                                            <parameter name="tmp.create-v4-pool-flag" value="Y" />
                                                        </set>
                                                        <for index="l4-idx" start="0" end="`$eipam-ip-block.level`">
                                                            <block atomic='true'>
                                                                <!--subnet and subnet_keys are deleted in the EIPAMPlugin-->
                                                                <set>
                                                                    <parameter name="eipam-ip-block.plans[$eipam-ip-block.plans_length].requests[0].pools[$l4-idx].key-name" value="`$v4FQPN-output.pools[$l4-idx].key-name`"/>
                                                                    <parameter name="eipam-ip-block.plans[$eipam-ip-block.plans_length].requests[0].pools[$l4-idx].key-value" value="`$v4FQPN-output.pools[$l4-idx].key-value`"/>
                                                                </set>
                                                                <record plugin="org.onap.ccsdk.sli.core.sli.recording.Slf4jRecorder">
                                                                    <parameter name="logger" value="message-log"/>
                                                                    <parameter name="field1" value="__TIMESTAMP__"/>
                                                                    <parameter name="field2" value="network-topology-operation"/>
                                                                    <parameter name="field3" value="eipam-create-generic-pool"/>
                                                                    <parameter name="field4" value="`$eipam-ip-block.plans[$eipam-ip-block.plans_length].plan-name`"/>
                                                                    <parameter name="field5" value="`$eipam-ip-block.plans[$eipam-ip-block.plans_length].requests[0].pools[$l4-idx].key-name`"/>
                                                                    <parameter name="field6" value="`$eipam-ip-block.plans[$eipam-ip-block.plans_length].requests[0].pools[$l4-idx].key-value`"/>
                                                                </record>
                                                            </block>
                                                        </for>
                                                        <set>
                                                            <parameter name="eipam-ip-block.plans_length" value="`$eipam-ip-block.plans_length + 1`" />
                                                        </set>
                                                    </block>
                                                </outcome>
                                            </switch>
                                        </block>
                                    </outcome>
                                    <outcome value=''>
                                        <return status="failure">
                                            <parameter name="tmp.eipam-error" value="true" />
                                            <parameter name="error-code" value="500"/>
                                            <parameter name="error-message" value="Please set the eipam-ip-block.level for appropriate EIPAM request." />
                                        </return>
                                    </outcome>
                                    <outcome value='Other'>
                                        <block atomic='true'>
                                            <!--subnet and subnet_keys are deleted in the EIPAMPlugin-->
                                            <set>
                                                <parameter name="network-topology-identifier-structure.eipam-v4-address-plan" value="`$network-model.eipam-v4-address-plan`"/>
                                                <parameter name="eipam-ip-block.plans[$eipam-ip-block.plans_length].plan-name" value="`$network-model.eipam-v4-address-plan`"/>
                                                <parameter name="eipam-ip-block.plans[$eipam-ip-block.plans_length].requests_length" value="1"/>
                                                <parameter name="eipam-ip-block.plans[$eipam-ip-block.plans_length].allocate-subnet-flag" value="`$tmp.allocate-subnet-flag`"/>
                                                <!-- Number of Pool Levels -->
                                                <parameter name="eipam-ip-block.plans[$eipam-ip-block.plans_length].requests[0].pools_length" value="`$eipam-ip-block.level`"/>
                                            </set>
                                            <!--subnet and subnet_keys are deleted in the EIPAMPlugin-->
                                            <set>
                                                <parameter name="tmp.create-v4-pool-flag" value="Y" />
                                            </set>
                                            <for index="l4-idx" start="0" end="`$eipam-ip-block.level`">
                                                <block atomic='true'>
                                                    <!--subnet and subnet_keys are deleted in the EIPAMPlugin-->
                                                    <set>
                                                        <parameter name="eipam-ip-block.plans[$eipam-ip-block.plans_length].requests[0].pools[$l4-idx].key-name" value="`$v4FQPN-output.pools[$l4-idx].key-name`"/>
                                                        <parameter name="eipam-ip-block.plans[$eipam-ip-block.plans_length].requests[0].pools[$l4-idx].key-value" value="`$v4FQPN-output.pools[$l4-idx].key-value`"/>
                                                    </set>
                                                    <record plugin="org.onap.ccsdk.sli.core.sli.recording.Slf4jRecorder">
                                                        <parameter name="logger" value="message-log"/>
                                                        <parameter name="field1" value="__TIMESTAMP__"/>
                                                        <parameter name="field2" value="network-topology-operation"/>
                                                        <parameter name="field3" value="eipam-create-generic-pool"/>
                                                        <parameter name="field4" value="`$eipam-ip-block.plans[$eipam-ip-block.plans_length].plan-name`"/>
                                                        <parameter name="field5" value="`$eipam-ip-block.plans[$eipam-ip-block.plans_length].requests[0].pools[$l4-idx].key-name`"/>
                                                        <parameter name="field6" value="`$eipam-ip-block.plans[$eipam-ip-block.plans_length].requests[0].pools[$l4-idx].key-value`"/>
                                                    </record>
                                                </block>
                                            </for>
                                            <set>
                                                <parameter name="eipam-ip-block.plans_length" value="`$eipam-ip-block.plans_length + 1`" />
                                            </set>
                                        </block>
                                    </outcome>
                                </switch>
                            </outcome>
                        </get-resource>
                    </block>
                </outcome>
                <outcome value=""></outcome>
                <outcome value='N'></outcome>
            </switch>
            <switch test="`$network-model.use-ipv6`">
                <outcome value='Y'>
                    <block atomic='true'>
                        <get-resource
        plugin='org.onap.ccsdk.sli.adaptors.resource.sql.SqlResource'
        resource='SQL'
        key="SELECT * FROM EIPAM_IP_POOLS where plan_name = $network-model.eipam-v6-address-plan and level = $eipam-ip-block.level and key_value = $v6FQPN-output.pools[$level].key-value ;"
        pfx='tmp.eipam-pool-row'>
                            <outcome value='failure'>
                                <return status="failure">
                                    <parameter name="tmp.eipam-error" value="true" />
                                    <parameter name="error-code" value="500"/>
                                    <parameter name="error-message" value="Query to DB table EIPAM_IP_POOLS failed." />
                                </return>
                            </outcome>
                            <outcome value='success'>
                                <block atomic='true'>
                                    <record plugin="org.onap.ccsdk.sli.core.sli.recording.Slf4jRecorder">
                                        <parameter name="logger" value="message-log"/>
                                        <parameter name="field1" value="__TIMESTAMP__"/>
                                        <parameter name="field2" value="network-topology-operation"/>
                                        <parameter name="field3" value="eipam-create-generic-pool"/>
                                        <parameter name="field4" value="`$network-model.eipam-v6-address-plan`"/>
                                        <parameter name="field5" value="`$v6FQPN-output.pools[$eipam-ip-block.level - 1].key-value`"/>
                                        <parameter name="field6" value="Level already exists, SKIP."/>
                                        <parameter name="field7" value="`$eipam-ip-block.level`"/>
                                        <parameter name="field8" value="`$tmp.eipam-pool-row.pool-id`"/>
                                    </record>
                                    <set>
                                        <parameter name="eipam-pool.v6.pre-existing" value="Y"/>
                                    </set>
                                </block>
                            </outcome>
                            <outcome value="not-found">
                                <switch test="`$l-idx`">
                                    <outcome value='1'>
                                        <block atomic='true'>
                                            <switch test="`$tmp.qip-pool`">
                                                <outcome value=""></outcome>
                                                <outcome value='Other'>
                                                    <!--subnet and subnet_keys are deleted in the EIPAMPlugin-->
                                                    <set>
                                                        <parameter name="eipam-ip-block.plans[$eipam-ip-block.plans_length].parent-pool" value="`$tmp.qip-pool`"/>
                                                        <parameter name="tmp.v6-qip-pool" value="`$tmp.qip-pool`" />
                                                    </set>
                                                </outcome>
                                            </switch>
                                            <switch test="`$tmp.skip-first-level`">
                                                <outcome value='Y'></outcome>
                                                <outcome value="">
                                                    <block atomic='true'>
                                                        <!--subnet and subnet_keys are deleted in the EIPAMPlugin-->
                                                        <set>
                                                            <parameter name="network-topology-identifier-structure.eipam-v6-address-plan" value="`$network-model.eipam-v6-address-plan`"/>
                                                            <parameter name="eipam-ip-block.plans[$eipam-ip-block.plans_length].plan-name" value="`$network-model.eipam-v6-address-plan`"/>
                                                            <parameter name="eipam-ip-block.plans[$eipam-ip-block.plans_length].requests_length" value="1"/>
                                                            <parameter name="eipam-ip-block.plans[$eipam-ip-block.plans_length].allocate-subnet-flag" value="`$tmp.allocate-subnet-flag`"/>
                                                            <!-- Number of Pool Levels -->
                                                            <parameter name="eipam-ip-block.plans[$eipam-ip-block.plans_length].requests[0].pools_length" value="`$eipam-ip-block.level`"/>
                                                        </set>
                                                        <!--subnet and subnet_keys are deleted in the EIPAMPlugin-->
                                                        <set>
                                                            <parameter name="tmp.create-v6-pool-flag" value="Y" />
                                                        </set>
                                                        <for index="l6-idx" start="0" end="`$eipam-ip-block.level`">
                                                            <block atomic='true'>
                                                                <!--subnet and subnet_keys are deleted in the EIPAMPlugin-->
                                                                <set>
                                                                    <parameter name="eipam-ip-block.plans[$eipam-ip-block.plans_length].requests[0].pools[$l6-idx].key-name" value="`$v6FQPN-output.pools[$l6-idx].key-name`"/>
                                                                    <parameter name="eipam-ip-block.plans[$eipam-ip-block.plans_length].requests[0].pools[$l6-idx].key-value" value="`$v6FQPN-output.pools[$l6-idx].key-value`"/>
                                                                </set>
                                                                <record plugin="org.onap.ccsdk.sli.core.sli.recording.Slf4jRecorder">
                                                                    <parameter name="logger" value="message-log"/>
                                                                    <parameter name="field1" value="__TIMESTAMP__"/>
                                                                    <parameter name="field2" value="network-topology-operation"/>
                                                                    <parameter name="field3" value="eipam-create-generic-pool"/>
                                                                    <parameter name="field4" value="`$eipam-ip-block.plans[$eipam-ip-block.plans_length].plan-name`"/>
                                                                    <parameter name="field5" value="`$eipam-ip-block.plans[$eipam-ip-block.plans_length].requests[0].pools[$l6-idx].key-name`"/>
                                                                    <parameter name="field6" value="`$eipam-ip-block.plans[$eipam-ip-block.plans_length].requests[0].pools[$l6-idx].key-value`"/>
                                                                    <parameter name="field7" value="`$l6-idx`"/>
                                                                </record>
                                                            </block>
                                                        </for>
                                                        <set>
                                                            <parameter name="eipam-ip-block.plans_length" value="`$eipam-ip-block.plans_length + 1`" />
                                                        </set>
                                                    </block>
                                                </outcome>
                                                <outcome value='N'>
                                                    <block atomic='true'>
                                                        <!--subnet and subnet_keys are deleted in the EIPAMPlugin-->
                                                        <set>
                                                            <parameter name="network-topology-identifier-structure.eipam-v6-address-plan" value="`$network-model.eipam-v6-address-plan`"/>
                                                            <parameter name="eipam-ip-block.plans[$eipam-ip-block.plans_length].plan-name" value="`$network-model.eipam-v6-address-plan`"/>
                                                            <parameter name="eipam-ip-block.plans[$eipam-ip-block.plans_length].requests_length" value="1"/>
                                                            <parameter name="eipam-ip-block.plans[$eipam-ip-block.plans_length].allocate-subnet-flag" value="`$tmp.allocate-subnet-flag`"/>
                                                            <!-- Number of Pool Levels -->
                                                            <parameter name="eipam-ip-block.plans[$eipam-ip-block.plans_length].requests[0].pools_length" value="`$eipam-ip-block.level`"/>
                                                        </set>
                                                        <!--subnet and subnet_keys are deleted in the EIPAMPlugin-->
                                                        <set>
                                                            <parameter name="tmp.create-v6-pool-flag" value="Y" />
                                                        </set>
                                                        <for index="l6-idx" start="0" end="`$eipam-ip-block.level`">
                                                            <block atomic='true'>
                                                                <!--subnet and subnet_keys are deleted in the EIPAMPlugin-->
                                                                <set>
                                                                    <parameter name="eipam-ip-block.plans[$eipam-ip-block.plans_length].requests[0].pools[$l6-idx].key-name" value="`$v6FQPN-output.pools[$l6-idx].key-name`"/>
                                                                    <parameter name="eipam-ip-block.plans[$eipam-ip-block.plans_length].requests[0].pools[$l6-idx].key-value" value="`$v6FQPN-output.pools[$l6-idx].key-value`"/>
                                                                </set>
                                                                <record plugin="org.onap.ccsdk.sli.core.sli.recording.Slf4jRecorder">
                                                                    <parameter name="logger" value="message-log"/>
                                                                    <parameter name="field1" value="__TIMESTAMP__"/>
                                                                    <parameter name="field2" value="network-topology-operation"/>
                                                                    <parameter name="field3" value="eipam-create-generic-pool"/>
                                                                    <parameter name="field4" value="`$eipam-ip-block.plans[$eipam-ip-block.plans_length].plan-name`"/>
                                                                    <parameter name="field5" value="`$eipam-ip-block.plans[$eipam-ip-block.plans_length].requests[0].pools[$l6-idx].key-name`"/>
                                                                    <parameter name="field6" value="`$eipam-ip-block.plans[$eipam-ip-block.plans_length].requests[0].pools[$l6-idx].key-value`"/>
                                                                    <parameter name="field7" value="`$l6-idx`"/>
                                                                </record>
                                                            </block>
                                                        </for>
                                                        <set>
                                                            <parameter name="eipam-ip-block.plans_length" value="`$eipam-ip-block.plans_length + 1`" />
                                                        </set>
                                                    </block>
                                                </outcome>
                                            </switch>
                                        </block>
                                    </outcome>
                                    <outcome value=''>
                                        <return status="failure">
                                            <parameter name="tmp.eipam-error" value="true" />
                                            <parameter name="error-code" value="500"/>
                                            <parameter name="error-message" value="Please set the eipam-ip-block.level for appropriate EIPAM request." />
                                        </return>
                                    </outcome>
                                    <outcome value='Other'>
                                        <block atomic='true'>
                                            <!--subnet and subnet_keys are deleted in the EIPAMPlugin-->
                                            <set>
                                                <parameter name="network-topology-identifier-structure.eipam-v6-address-plan" value="`$network-model.eipam-v6-address-plan`"/>
                                                <parameter name="eipam-ip-block.plans[$eipam-ip-block.plans_length].plan-name" value="`$network-model.eipam-v6-address-plan`"/>
                                                <parameter name="eipam-ip-block.plans[$eipam-ip-block.plans_length].requests_length" value="1"/>
                                                <parameter name="eipam-ip-block.plans[$eipam-ip-block.plans_length].allocate-subnet-flag" value="`$tmp.allocate-subnet-flag`"/>
                                                <!-- Number of Pool Levels -->
                                                <parameter name="eipam-ip-block.plans[$eipam-ip-block.plans_length].requests[0].pools_length" value="`$eipam-ip-block.level`"/>
                                            </set>
                                            <!--subnet and subnet_keys are deleted in the EIPAMPlugin-->
                                            <set>
                                                <parameter name="tmp.create-v6-pool-flag" value="Y" />
                                            </set>
                                            <for index="l6-idx" start="0" end="`$eipam-ip-block.level`">
                                                <block atomic='true'>
                                                    <!--subnet and subnet_keys are deleted in the EIPAMPlugin-->
                                                    <set>
                                                        <parameter name="eipam-ip-block.plans[$eipam-ip-block.plans_length].requests[0].pools[$l6-idx].key-name" value="`$v6FQPN-output.pools[$l6-idx].key-name`"/>
                                                        <parameter name="eipam-ip-block.plans[$eipam-ip-block.plans_length].requests[0].pools[$l6-idx].key-value" value="`$v6FQPN-output.pools[$l6-idx].key-value`"/>
                                                    </set>
                                                    <record plugin="org.onap.ccsdk.sli.core.sli.recording.Slf4jRecorder">
                                                        <parameter name="logger" value="message-log"/>
                                                        <parameter name="field1" value="__TIMESTAMP__"/>
                                                        <parameter name="field2" value="network-topology-operation"/>
                                                        <parameter name="field3" value="eipam-create-generic-pool"/>
                                                        <parameter name="field4" value="`$eipam-ip-block.plans[$eipam-ip-block.plans_length].plan-name`"/>
                                                        <parameter name="field5" value="`$eipam-ip-block.plans[$eipam-ip-block.plans_length].requests[0].pools[$l6-idx].key-name`"/>
                                                        <parameter name="field6" value="`$eipam-ip-block.plans[$eipam-ip-block.plans_length].requests[0].pools[$l6-idx].key-value`"/>
                                                        <parameter name="field7" value="`$l6-idx`"/>
                                                    </record>
                                                </block>
                                            </for>
                                            <set>
                                                <parameter name="eipam-ip-block.plans_length" value="`$eipam-ip-block.plans_length + 1`" />
                                            </set>
                                        </block>
                                    </outcome>
                                </switch>
                            </outcome>
                        </get-resource>
                    </block>
                </outcome>
                <outcome value=""></outcome>
                <outcome value='N'></outcome>
            </switch>
            <switch test="`$tmp.create-v4-pool-flag`">
                <outcome value='Y'>
                    <!--subnet and subnet_keys are deleted in the EIPAMPlugin-->
                    <execute plugin="com.att.sdnctl.sli.plugin.eipam.EIPAMPlugin" method="createPool">
                        <outcome value='success'></outcome>
                        <outcome value='failure'>
                            <return status="failure">
                                <parameter name="tmp.eipam-error" value="true" />
                                <parameter name="error-code" value="500"/>
                                <parameter name="error-message" value="An error occured while creating pool in EIPAM." />
                            </return>
                        </outcome>
                    </execute>
                </outcome>
                <outcome value='N'>
                    <switch test="`$tmp.create-v6-pool-flag`">
                        <outcome value='Y'>
                            <!--subnet and subnet_keys are deleted in the EIPAMPlugin-->
                            <execute plugin="com.att.sdnctl.sli.plugin.eipam.EIPAMPlugin" method="createPool">
                                <outcome value='success'></outcome>
                                <outcome value='failure'>
                                    <return status="failure">
                                        <parameter name="tmp.eipam-error" value="true" />
                                        <parameter name="error-code" value="500"/>
                                        <parameter name="error-message" value="An error occured while creating pool in EIPAM." />
                                    </return>
                                </outcome>
                            </execute>
                        </outcome>
                    </switch>
                </outcome>
            </switch>
            <switch test="`$network-model.use-ipv4`">
                <outcome value='Y'>
                    <block atomic='true'>
                        <switch test="`$eipam-pool.v4.pre-existing`">
                            <outcome value='N'>
                                <block atomic='true'>
                                    <set>
                                        <parameter name="key-name" value="`$v4FQPN-output.pools[$eipam-ip-block.level - 1].key-name`" />
                                        <parameter name="key-value" value="`$v4FQPN-output.pools[$eipam-ip-block.level - 1].key-value`" />
                                    </set>
                                    <switch test="`$eipam-ip-block.level`">
                                        <outcome value='1'>
                                            <block atomic='true'>
                                                <set>
                                                    <parameter name="parent_pool" value="`$tmp.v4-qip-pool`" />
                                                    <parameter name="level" value="`$eipam-ip-block.level - 1`" />
                                                </set>
                                            </block>
                                        </outcome>
                                        <outcome value='Other'>
                                            <block atomic='true'>
                                                <set>
                                                    <parameter name="parent_pool" value="`$v4FQPN-output.pools[$eipam-ip-block.level - 2].key-value`" />
                                                    <parameter name="level" value="`$eipam-ip-block.level - 1`" />
                                                </set>
                                            </block>
                                        </outcome>
                                    </switch>
                                    <record plugin="org.onap.ccsdk.sli.core.sli.recording.Slf4jRecorder">
                                        <parameter name="logger" value="message-log"/>
                                        <parameter name="field1" value="__TIMESTAMP__"/>
                                        <parameter name="field2" value="network-topology-operation"/>
                                        <parameter name="field3" value="eipam-create-generic-pool"/>
                                        <parameter name="field4" value="`$network-model.eipam-v4-address-plan`"/>
                                        <parameter name="field5" value="`$key-name`"/>
                                        <parameter name="field6" value="`$key-value`"/>
                                        <parameter name="field7" value="`$tmp.network_instance_group_id`"/>
                                        <parameter name="field8" value="`$eipam-ip-block.level`"/>
                                        <parameter name="field9" value="`$network-model.network-role`"/>
                                        <parameter name="field10" value="`$tmp.network-id`"/>
                                        <parameter name="field11" value="Saving to EIPAM_IP_POOLS table."/>
                                    </record>
                                    <switch test="`$network-instance-group-data.subnet-assignment-policy.subnet-use`">
                                        <outcome value='shared'>
                                            <save
        plugin='org.onap.ccsdk.sli.adaptors.resource.sql.SqlResource'
        resource='SQL'
        key="INSERT EIPAM_IP_POOLS
             SET
             key_name = $key-name ,
             key_value = $key-value ,
             level = $eipam-ip-block.level ,
             plan_name = $network-model.eipam-v4-address-plan ,
             address_family = $network-model.ipv4-ip-version ,
             parent_pool = $parent_pool ,
             service_instance_id = $network-topology-operation-input.service-information.service-instance-id ,
             network_id = $tmp.network-id ,
             network_instance_group_id = $tmp.network-instance-group-id ; "
    force='true'
        pfx='pfx.eipam-v4pool-row'>
                                                <outcome value='failure'>
                                                    <return status='failure'>
                                                        <parameter name='error-code' value='500' />
                                                        <parameter name='error-message' value='failed to update EIPAM_IP_POOLS .' />
                                                    </return>
                                                </outcome>
                                            </save>
                                        </outcome>
                                        <outcome value='Other'>
                                            <save
        plugin='org.onap.ccsdk.sli.adaptors.resource.sql.SqlResource'
        resource='SQL'
        key="INSERT EIPAM_IP_POOLS
             SET
             key_name = $key-name ,
             key_value = $key-value ,
             level = $eipam-ip-block.level ,
             plan_name = $network-model.eipam-v4-address-plan ,
             address_family = $network-model.ipv4-ip-version ,
             parent_pool = $parent_pool ,
             service_instance_id = $network-topology-operation-input.service-information.service-instance-id ,
             network_id = $tmp.network-id ; "
    force='true'
        pfx='pfx.eipam-v4pool-row'>
                                                <outcome value='failure'>
                                                    <return status='failure'>
                                                        <parameter name='error-code' value='500' />
                                                        <parameter name='error-message' value='failed to update EIPAM_IP_POOLS .' />
                                                    </return>
                                                </outcome>
                                            </save>
                                        </outcome>
                                        <outcome value=''>
                                            <save
        plugin='org.onap.ccsdk.sli.adaptors.resource.sql.SqlResource'
        resource='SQL'
        key="INSERT EIPAM_IP_POOLS
             SET
             key_name = $key-name ,
             key_value = $key-value ,
             level = $eipam-ip-block.level ,
             plan_name = $network-model.eipam-v4-address-plan ,
             address_family = $network-model.ipv4-ip-version ,
             parent_pool = $parent_pool ,
             service_instance_id = $network-topology-operation-input.service-information.service-instance-id ,
             network_id = $tmp.network-id ; "
    force='true'
        pfx='pfx.eipam-v4pool-row'>
                                                <outcome value='failure'>
                                                    <return status='failure'>
                                                        <parameter name='error-code' value='500' />
                                                        <parameter name='error-message' value='failed to update EIPAM_IP_POOLS .' />
                                                    </return>
                                                </outcome>
                                            </save>
                                        </outcome>
                                    </switch>
                                    <switch test="`$eipam-ip-block.level == $eipam-ip-block.getPlanTopologyResponse.TopologyDetails_length`">
                                        <outcome value='true'>
                                            <block atomic='true'>
                                                <switch test="`$tmp.allocate-subnet-flag`">
                                                    <outcome value='Y'>
                                                        <block atomic='true'>
                                                            <for index="i" start="0" end="`$eipam-ip-block.createPoolResponse.CreatePoolPlans.CreatePoolPlan_length`">
                                                                <block atomic='true'>
                                                                    <switch test="`$network-model.eipam-v4-address-plan == $eipam-ip-block.createPoolResponse.CreatePoolPlans.CreatePoolPlan[$i].PlanName`">
                                                                        <outcome value='true'>
                                                                            <block atomic='true'>
                                                                                <set>
                                                                                    <parameter name="index_found" value="true" />
                                                                                </set>
                                                                                <break/>
                                                                            </block>
                                                                        </outcome>
                                                                    </switch>
                                                                </block>
                                                            </for>
                                                            <switch test="`$index_found`">
                                                                <outcome value='true'>
                                                                    <block atomic='true'>
                                                                        <get-resource
        plugin='org.onap.ccsdk.sli.adaptors.resource.sql.SqlResource'
        resource='SQL'
        key="SELECT * FROM EIPAM_IP_POOLS where plan_name = $network-model.eipam-v4-address-plan and level = $eipam-ip-block.level and key_value = $v4FQPN-output.pools[$level].key-value ;"
        pfx='tmp.eipam-pool-row'>
                                                                            <outcome value='failure'>
                                                                                <return status="failure">
                                                                                    <parameter name="tmp.eipam-error" value="true" />
                                                                                    <parameter name="error-code" value="500"/>
                                                                                    <parameter name="error-message" value="Query to DB table EIPAM_IP_POOLS failed." />
                                                                                </return>
                                                                            </outcome>
                                                                            <outcome value='success'>
                                                                                <block atomic='true'>
                                                                                    <save
        plugin='org.onap.ccsdk.sli.adaptors.resource.sql.SqlResource'
        resource='SQL'
        key="INSERT EIPAM_IP_SUBNETS
             SET
             entity_id = $eipam-ip-block.createPoolResponse.CreatePoolPlans.CreatePoolPlan[$i].PoolItem.IPDataBlock.IpamPoolAllocId ,
             service_type = $tmp.service-type ,
             ip_address = $eipam-ip-block.createPoolResponse.CreatePoolPlans.CreatePoolPlan[$i].PoolItem.IPDataBlock.IPAddress ,
             prefix_length = $eipam-ip-block.createPoolResponse.CreatePoolPlans.CreatePoolPlan[$i].PoolItem.IPDataBlock.Mask ,
             plan_name = $network-model.eipam-v4-address-plan ,
             status = 'ALLOCATED' ,
             pool_id = $tmp.eipam-pool-row.pool-id ,
             address_family = $network-model.ipv4-ip-version ,
             network_id = $tmp.network-id ; "
    force='true'
        pfx='pfx.eipam-subnet-row'>
                                                                                        <outcome value='failure'>
                                                                                            <return status='failure'>
                                                                                                <parameter name='error-code' value='500' />
                                                                                                <parameter name='error-message' value='failed to update EIPAM_IP_SUBNETS .' />
                                                                                            </return>
                                                                                        </outcome>
                                                                                        <outcome value='success'></outcome>
                                                                                    </save>
                                                                                    <save
        plugin='org.onap.ccsdk.sli.adaptors.resource.sql.SqlResource'
        resource='SQL'
        key="INSERT EIPAM_IP_SUBNET_KEYS
             SET
             entity_id = $eipam-ip-block.createPoolResponse.CreatePoolPlans.CreatePoolPlan[$i].PoolItem.IPDataBlock.IpamPoolAllocId ,
             key_name = $key-name ,
             key_value = $key-value ,
             level = $eipam-ip-block.level ; "
    force='true'
        pfx='pfx.eipam-v4subnet-key-row'>
                                                                                        <outcome value='success'></outcome>
                                                                                        <outcome value='failure'>
                                                                                            <return status='failure'>
                                                                                                <parameter name='error-code' value='500' />
                                                                                                <parameter name='error-message' value='failed to update EIPAM_IP_SUBNET_KEYS .' />
                                                                                            </return>
                                                                                        </outcome>
                                                                                    </save>
                                                                                </block>
                                                                            </outcome>
                                                                            <outcome value="not-found">
                                                                                <return status="failure">
                                                                                    <parameter name="tmp.eipam-error" value="true" />
                                                                                    <parameter name="error-code" value="500"/>
                                                                                    <parameter name="error-message" value="Query to DB table EIPAM_IP_POOLS failed." />
                                                                                </return>
                                                                            </outcome>
                                                                        </get-resource>
                                                                    </block>
                                                                </outcome>
                                                                <outcome value='Other'>
                                                                    <return status='failure'>
                                                                        <parameter name='error-code' value='500' />
                                                                        <parameter name='error-message' value='failed to find plan name in CreatePoolResponse.' />
                                                                    </return>
                                                                </outcome>
                                                                <outcome value=''>
                                                                    <return status='failure'>
                                                                        <parameter name='error-code' value='500' />
                                                                        <parameter name='error-message' value='failed to find plan name in CreatePoolResponse.' />
                                                                    </return>
                                                                </outcome>
                                                            </switch>
                                                        </block>
                                                    </outcome>
                                                    <outcome value='N'></outcome>
                                                </switch>
                                            </block>
                                        </outcome>
                                    </switch>
                                </block>
                            </outcome>
                            <outcome value='Y'></outcome>
                        </switch>
                    </block>
                </outcome>
                <outcome value=""></outcome>
                <outcome value='N'></outcome>
            </switch>
            <switch test="`$network-model.use-ipv6`">
                <outcome value='Y'>
                    <block atomic='true'>
                        <switch test="`$eipam-pool.v6.pre-existing`">
                            <outcome value='N'>
                                <block atomic='true'>
                                    <set>
                                        <parameter name="key-name" value="`$v6FQPN-output.pools[$eipam-ip-block.level - 1].key-name`" />
                                        <parameter name="key-value" value="`$v6FQPN-output.pools[$eipam-ip-block.level - 1].key-value`" />
                                    </set>
                                    <switch test="`$eipam-ip-block.level`">
                                        <outcome value='1'>
                                            <set>
                                                <parameter name="parent_pool" value="`$tmp.v6-qip-pool`" />
                                                <parameter name="level" value="`$eipam-ip-block.level - 1`" />
                                            </set>
                                        </outcome>
                                        <outcome value='Other'>
                                            <set>
                                                <parameter name="parent_pool" value="`$v6FQPN-output.pools[$eipam-ip-block.level - 2].key-value`" />
                                                <parameter name="level" value="`$eipam-ip-block.level - 1`" />
                                            </set>
                                        </outcome>
                                    </switch>
                                    <record plugin="org.onap.ccsdk.sli.core.sli.recording.Slf4jRecorder">
                                        <parameter name="logger" value="message-log"/>
                                        <parameter name="field1" value="__TIMESTAMP__"/>
                                        <parameter name="field2" value="network-topology-operation"/>
                                        <parameter name="field3" value="eipam-create-network-role-pool"/>
                                        <parameter name="field4" value="`$network-model.eipam-v6-address-plan`"/>
                                        <parameter name="field5" value="`$v6FQPN-output.pools[$level].key-name`"/>
                                        <parameter name="field6" value="`$v6FQPN-output.pools[$level].key-value`"/>
                                        <parameter name="field7" value="`$tmp.network_instance_group_id`"/>
                                        <parameter name="field8" value="`$eipam-ip-block.level`"/>
                                        <parameter name="field9" value="`$network-model.network-role`"/>
                                        <parameter name="field10" value="`$tmp.network-id`"/>
                                        <parameter name="field11" value="Saving to EIPAM_IP_POOLS table."/>
                                    </record>
                                    <switch test="`$network-instance-group-data.subnet-assignment-policy.subnet-use`">
                                        <outcome value='shared'>
                                            <save
        plugin='org.onap.ccsdk.sli.adaptors.resource.sql.SqlResource'
        resource='SQL'
        key="INSERT EIPAM_IP_POOLS
             SET
             key_name = $v6FQPN-output.pools[$level].key-name ,
             key_value = $v6FQPN-output.pools[$level].key-value ,
             level = $eipam-ip-block.level ,
             plan_name = $network-model.eipam-v6-address-plan ,
             address_family = $network-model.ipv6-ip-version ,
             parent_pool = $parent_pool ,
             service_instance_id = $network-topology-operation-input.service-information.service-instance-id ,
             network_id = $tmp.network-id ,
             network_instance_group_id = $tmp.network-instance-group-id ; "
    force='true'
        pfx='pfx.eipam-v6pool-row'>
                                                <outcome value='failure'>
                                                    <return status='failure'>
                                                        <parameter name='error-code' value='500' />
                                                        <parameter name='error-message' value='failed to update EIPAM_IP_POOLS .' />
                                                    </return>
                                                </outcome>
                                            </save>
                                        </outcome>
                                        <outcome value='Other'>
                                            <save
        plugin='org.onap.ccsdk.sli.adaptors.resource.sql.SqlResource'
        resource='SQL'
        key="INSERT EIPAM_IP_POOLS
             SET
             key_name = $v6FQPN-output.pools[$level].key-name ,
             key_value = $v6FQPN-output.pools[$level].key-value ,
             level = $eipam-ip-block.level ,
             plan_name = $network-model.eipam-v6-address-plan ,
             address_family = $network-model.ipv6-ip-version ,
             parent_pool = $parent_pool ,
             service_instance_id = $network-topology-operation-input.service-information.service-instance-id ,
             network_id = $tmp.network-id ; "
    force='true'
        pfx='pfx.eipam-v6pool-row'>
                                                <outcome value='failure'>
                                                    <return status='failure'>
                                                        <parameter name='error-code' value='500' />
                                                        <parameter name='error-message' value='failed to update EIPAM_IP_POOLS .' />
                                                    </return>
                                                </outcome>
                                            </save>
                                        </outcome>
                                        <outcome value=''>
                                            <save
        plugin='org.onap.ccsdk.sli.adaptors.resource.sql.SqlResource'
        resource='SQL'
        key="INSERT EIPAM_IP_POOLS
             SET
             key_name = $v6FQPN-output.pools[$level].key-name ,
             key_value = $v6FQPN-output.pools[$level].key-value ,
             level = $eipam-ip-block.level ,
             plan_name = $network-model.eipam-v6-address-plan ,
             address_family = $network-model.ipv6-ip-version ,
             parent_pool = $parent_pool ,
             service_instance_id = $network-topology-operation-input.service-information.service-instance-id ,
             network_id = $tmp.network-id ; "
    force='true'
        pfx='pfx.eipam-v6pool-row'>
                                                <outcome value='failure'>
                                                    <return status='failure'>
                                                        <parameter name='error-code' value='500' />
                                                        <parameter name='error-message' value='failed to update EIPAM_IP_POOLS .' />
                                                    </return>
                                                </outcome>
                                            </save>
                                        </outcome>
                                    </switch>
                                    <switch test="`$eipam-ip-block.level == $eipam-ip-block.getPlanTopologyResponse.TopologyDetails_length`">
                                        <outcome value='true'>
                                            <block atomic='true'>
                                                <switch test="`$tmp.allocate-subnet-flag`">
                                                    <outcome value='Y'>
                                                        <block atomic='true'>
                                                            <for index="i" start="0" end="`$eipam-ip-block.createPoolResponse.CreatePoolPlans.CreatePoolPlan_length`">
                                                                <block atomic='true'>
                                                                    <switch test="`$network-model.eipam-v6-address-plan == $eipam-ip-block.createPoolResponse.CreatePoolPlans.CreatePoolPlan[$i].PlanName`">
                                                                        <outcome value='true'>
                                                                            <block atomic='true'>
                                                                                <set>
                                                                                    <parameter name="index_found" value="true" />
                                                                                </set>
                                                                                <break/>
                                                                            </block>
                                                                        </outcome>
                                                                    </switch>
                                                                </block>
                                                            </for>
                                                            <switch test="`$index_found`">
                                                                <outcome value='true'>
                                                                    <block atomic='true'>
                                                                        <get-resource
        plugin='org.onap.ccsdk.sli.adaptors.resource.sql.SqlResource'
        resource='SQL'
        key="SELECT * FROM EIPAM_IP_POOLS where plan_name = $network-model.eipam-v6-address-plan and level = $eipam-ip-block.level and key_value = $v6FQPN-output.pools[$level].key-value ;"
        pfx='tmp.eipam-pool-row'>
                                                                            <outcome value='failure'>
                                                                                <return status="failure">
                                                                                    <parameter name="tmp.eipam-error" value="true" />
                                                                                    <parameter name="error-code" value="500"/>
                                                                                    <parameter name="error-message" value="Query to DB table EIPAM_IP_POOLS failed." />
                                                                                </return>
                                                                            </outcome>
                                                                            <outcome value='success'>
                                                                                <block atomic='true'>
                                                                                    <save
        plugin='org.onap.ccsdk.sli.adaptors.resource.sql.SqlResource'
        resource='SQL'
        key="INSERT EIPAM_IP_SUBNETS
             SET
             entity_id = $eipam-ip-block.createPoolResponse.CreatePoolPlans.CreatePoolPlan[$i].PoolItem.IPDataBlock.IpamPoolAllocId ,
             service_type = $tmp.service-type ,
             ip_address = $eipam-ip-block.createPoolResponse.CreatePoolPlans.CreatePoolPlan[$i].PoolItem.IPDataBlock.IPAddress ,
             prefix_length = $eipam-ip-block.createPoolResponse.CreatePoolPlans.CreatePoolPlan[$i].PoolItem.IPDataBlock.Mask ,
             plan_name = $network-model.eipam-v6-address-plan ,
             status = 'ALLOCATED' ,
             pool_id = $tmp.eipam-pool-row.pool-id ,
             address_family = $network-model.ipv6-ip-version ,
             network_id = $tmp.network-id ; "
    force='true'
        pfx='pfx.eipam-subnet-row'>
                                                                                        <outcome value='failure'>
                                                                                            <return status='failure'>
                                                                                                <parameter name='error-code' value='500' />
                                                                                                <parameter name='error-message' value='failed to update EIPAM_IP_SUBNETS .' />
                                                                                            </return>
                                                                                        </outcome>
                                                                                        <outcome value='success'></outcome>
                                                                                    </save>
                                                                                    <save
        plugin='org.onap.ccsdk.sli.adaptors.resource.sql.SqlResource'
        resource='SQL'
        key="INSERT EIPAM_IP_SUBNET_KEYS
             SET
             entity_id = $eipam-ip-block.createPoolResponse.CreatePoolPlans.CreatePoolPlan[$i].PoolItem.IPDataBlock.IpamPoolAllocId ,
             key_name = $key-name ,
             key_value = $key-value ,
             level = $eipam-ip-block.level ; "
    force='true'
        pfx='pfx.eipam-v4subnet-key-row'>
                                                                                        <outcome value='success'></outcome>
                                                                                        <outcome value='failure'>
                                                                                            <return status='failure'>
                                                                                                <parameter name='error-code' value='500' />
                                                                                                <parameter name='error-message' value='failed to update EIPAM_IP_SUBNET_KEYS .' />
                                                                                            </return>
                                                                                        </outcome>
                                                                                    </save>
                                                                                </block>
                                                                            </outcome>
                                                                            <outcome value="not-found">
                                                                                <return status="failure">
                                                                                    <parameter name="tmp.eipam-error" value="true" />
                                                                                    <parameter name="error-code" value="500"/>
                                                                                    <parameter name="error-message" value="Query to DB table EIPAM_IP_POOLS failed." />
                                                                                </return>
                                                                            </outcome>
                                                                        </get-resource>
                                                                    </block>
                                                                </outcome>
                                                                <outcome value='Other'>
                                                                    <return status='failure'>
                                                                        <parameter name='error-code' value='500' />
                                                                        <parameter name='error-message' value='failed to find plan name in CreatePoolResponse.' />
                                                                    </return>
                                                                </outcome>
                                                                <outcome value=''>
                                                                    <return status='failure'>
                                                                        <parameter name='error-code' value='500' />
                                                                        <parameter name='error-message' value='failed to find plan name in CreatePoolResponse.' />
                                                                    </return>
                                                                </outcome>
                                                            </switch>
                                                        </block>
                                                    </outcome>
                                                    <outcome value='N'></outcome>
                                                </switch>
                                            </block>
                                        </outcome>
                                    </switch>
                                </block>
                            </outcome>
                            <outcome value='Y'></outcome>
                        </switch>
                    </block>
                </outcome>
                <outcome value=""></outcome>
                <outcome value='N'></outcome>
            </switch>
            <return status='success'>
                <parameter name="error-code" value="200" />
            </return>
        </block>
    </method>
</service-logic>