--- /dev/null
+<service-logic\r
+ xmlns='http://www.onap.org/sdnc/svclogic'\r
+ xmlns:xsi='http://www.w3.org/2001/XMLSchema-instance' xsi:schemaLocation='http://www.onap.org/sdnc/svclogic ./svclogic.xsd' module='GENERIC-RESOURCE-API' version='${project.version}'>\r
+ <method rpc='generate-FQPN' mode='sync'>\r
+ <block atomic="true">\r
+ <switch test='`$generate-FQPN-input.plan-name`'>\r
+ <outcome value=''>\r
+ <return status="failure">\r
+ <parameter name="ack-final" value="Y" />\r
+ <parameter name="error-code" value="500"/>\r
+ <parameter name="error-message" value="generate-FQPN-input.plan-name is null" />\r
+ </return>\r
+ </outcome>\r
+ </switch>\r
+ <set>\r
+ <parameter name='eipam-ip-block.plan-name' value='`$generate-FQPN-input.plan-name`' />\r
+ </set>\r
+ <set>\r
+ <parameter name='generate-FQPN-output.' value='' />\r
+ </set>\r
+ <execute plugin="com.att.sdnctl.sli.plugin.eipam.EIPAMPlugin" method="getPlanTopology">\r
+ <outcome value='failure'>\r
+ <return status="failure">\r
+ <parameter name="ack-final" value="Y" />\r
+ <parameter name="error-code" value="500"/>\r
+ <parameter name="error-message" value="`'An error occured while getting Keyname and Keyvalue for address plan, '+ $eipam-ip-block.planName + ', from EIPAM'`" />\r
+ </return>\r
+ </outcome>\r
+ </execute>\r
+ <switch test='`$eipam-ip-block.getPlanTopologyResponse.TopologyDetails_length`'>\r
+ <outcome value=''>\r
+ <return status="failure">\r
+ <parameter name="ack-final" value="Y" />\r
+ <parameter name="error-code" value="500"/>\r
+ <parameter name="error-message" value="eipam-ip-block.getPlanTopologyResponse.TopologyDetails is null" />\r
+ </return>\r
+ </outcome>\r
+ </switch>\r
+ <switch test='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-topology.sdnc-generated-cloud-resources`'>\r
+ <outcome value='true'>\r
+ <call module='GENERIC-RESOURCE-API' rpc='self-serve-generate-FQPN' mode='sync' ></call>\r
+ </outcome>\r
+ <outcome value='false'>\r
+ <block atomic='true'>\r
+ <for index="resp-index" start="0" end="`$eipam-ip-block.getPlanTopologyResponse.TopologyDetails_length`">\r
+ <switch test='`$eipam-ip-block.plan-name == $eipam-ip-block.getPlanTopologyResponse.PlanName`'>\r
+ <outcome value='false'>\r
+ <return status="failure">\r
+ <parameter name="ack-final" value="Y" />\r
+ <parameter name="error-code" value="500"/>\r
+ <parameter name="error-message" value="`'eipam response plan-name ['+ $eipam-ip-block.getPlanTopologyResponse.PlanName + ' is not the same as input '+$eipam-ip-block.planName`" />\r
+ </return>\r
+ </outcome>\r
+ </switch>\r
+ <set>\r
+ <parameter name='pool-index'\r
+ value='`$eipam-ip-block.getPlanTopologyResponse.TopologyDetails[$resp-index].Level - 1`' />\r
+ </set>\r
+ <set>\r
+ <parameter name='tmp.final.key-value' value="" />\r
+ </set>\r
+ <set>\r
+ <parameter name='tmp.getPlanTopologyResponse.key-name' \r
+ value='`$eipam-ip-block.getPlanTopologyResponse.TopologyDetails[$resp-index].KeyName`' />\r
+ </set>\r
+ <execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliStringUtils' method='split' >\r
+ <parameter name="original_string" value="`$tmp.getPlanTopologyResponse.key-name`" />\r
+ <parameter name="regex" value=":" />\r
+ <parameter name="ctx_memory_result_key" value="tmp.split.key-name" />\r
+ </execute>\r
+ <for index="split-index" start="0" end="`$tmp.split.key-name_length`">\r
+ <set>\r
+ <parameter name='tmp.eipam.key-name' \r
+ value='`$tmp.split.key-name[$split-index]`' />\r
+ </set>\r
+ <block atomic='true'>\r
+ <get-resource plugin='org.onap.ccsdk.sli.adaptors.resource.sql.SqlResource' resource='SQL'\r
+ key='SELECT key_value_source from ADDRESS_PLAN_POLICIES WHERE key_name = $tmp.eipam.key-name '\r
+ pfx='db.address-plan-policies'>\r
+ <outcome value='failure'>\r
+ <return status='failure'>\r
+ <parameter name='ack-final' value='Y'/>\r
+ <parameter name="error-code" value="500" />\r
+ <parameter name="error-message" value="Error reading ADDRESS_PLAN_POLICIES table" />\r
+ </return>\r
+ </outcome>\r
+ <outcome value='not-found'>\r
+ <return status='failure'>\r
+ <parameter name='ack-final' value='Y'/>\r
+ <parameter name="error-code" value="500" />\r
+ <parameter name="error-message" value="`'No ADDRESS_PLAN_POLICIES entry found for key_name = ' + $eipam-ip-block.getPlanTopologyResponse.TopologyDetails[$key-index].KeyName`" />\r
+ </return>\r
+ </outcome>\r
+ </get-resource>\r
+ <get-resource plugin='org.onap.ccsdk.sli.adaptors.resource.sql.SqlResource' resource='SQL'\r
+ key='SELECT * from ROUTING_CHARACTERISTIC_MAPPING WHERE network_role = $generate-FQPN-input.network-role '\r
+ pfx='db.routing-characteristic_mapping[]'>\r
+ <outcome value='failure'>\r
+ <return status='failure'>\r
+ <parameter name='ack-final' value='Y'/>\r
+ <parameter name="error-code" value="500" />\r
+ <parameter name="error-message" value="Error reading ROUTING_CHARACTERISTIC_MAPPING table" />\r
+ </return>\r
+ </outcome>\r
+ <outcome value='not-found'>\r
+ <return status='failure'>\r
+ <parameter name='ack-final' value='Y'/>\r
+ <parameter name="error-code" value="500" />\r
+ <parameter name="error-message" value="`'No ROUTING_CHARACTERISTIC_MAPPING entry found for network_role = ' + $generate-FQPN-input.network-role`" />\r
+ </return>\r
+ </outcome>\r
+ </get-resource>\r
+ <set>\r
+ <parameter name='tmp.key-value' value='' />\r
+ </set>\r
+ <switch test='`$db.address-plan-policies.key-value-source`'>\r
+ <outcome value='AddressPlanPolicyDG-Routing_Characteristic'>\r
+ <block atomic="true">\r
+ <set>\r
+ <parameter name='tmp.key-value' value='-1' />\r
+ </set>\r
+ <switch test='`$db.routing-characteristic_mapping_length > 1`'>\r
+ <outcome value='true'>\r
+ <block>\r
+ <for index="routing-index" start="0" end="`$db.routing-characteristic_mapping_length`">\r
+ <switch test='`$db.routing-characteristic_mapping[$routing-index].vrf-name == $generate-FQPN-input.vrf-name`'>\r
+ <outcome value='true'>\r
+ <block atomic='true'>\r
+ <set>\r
+ <parameter name='tmp.key-value' value='`$db.routing-characteristic_mapping[$routing-index].routing-characteristic`' />\r
+ </set>\r
+ <return status='failure'></return>\r
+ </block>\r
+ </outcome>\r
+ </switch>\r
+ </for>\r
+ <return status='success'></return>\r
+ </block>\r
+ </outcome>\r
+ <outcome value='false'>\r
+ <set>\r
+ <parameter name='tmp.key-value' value='`$db.routing-characteristic_mapping[0].routing-characteristic`' />\r
+ </set>\r
+ </outcome>\r
+ </switch>\r
+ <switch test='`$tmp.key-value`'>\r
+ <outcome value='-1'>\r
+ <return status='failure'>\r
+ <parameter name='ack-final' value='Y'/>\r
+ <parameter name="error-code" value="500" />\r
+ <parameter name="error-message" value="No matching ROUTING_CHARACTERISTIC_MAPPING.vrf-name found" />\r
+ </return>\r
+ </outcome>\r
+ </switch>\r
+ </block>\r
+ </outcome>\r
+ <outcome value='AddressPlanPolicyDG-Location_Clli8'>\r
+ <set>\r
+ <parameter name='tmp.key-value' value='`$generate-FQPN-input.location-clli8`' />\r
+ </set>\r
+ </outcome>\r
+ <outcome value='AddressPlanPolicyDG-Vrf_Name'>\r
+ <switch test='`$generate-FQPN-input.vrf-name`'>\r
+ <outcome value=''>\r
+ <set>\r
+ <parameter name='tmp.key-value' value='`$db.routing-characteristic_mapping[0].vrf-name`' />\r
+ </set>\r
+ </outcome>\r
+ </switch>\r
+ </outcome>\r
+ <outcome value='cloud_region_id'>\r
+ <set>\r
+ <parameter name='tmp.key-value' value='`$generate-FQPN-input.aic-cloud-region`' />\r
+ </set>\r
+ </outcome>\r
+ <outcome value='AddressPlanPolicyDG-Complex_region'>\r
+ <set>\r
+ <parameter name='tmp.key-value' value='`$aai.complex.region`' />\r
+ </set>\r
+ </outcome>\r
+ <outcome value='AddressPlanPolicyDG-Network_Name'>\r
+ <set>\r
+ <parameter name='tmp.key-value' value='`$generate-FQPN-input.network-name`' />\r
+ </set>\r
+ </outcome>\r
+ <outcome value='AddressPlanPolicyDG-Subnet_Role'>\r
+ <switch test='`$generate-FQPN-input.subnet-role`' >\r
+ <outcome value=''>\r
+ <set>\r
+ <parameter name='tmp.key-value' value='STATIC' />\r
+ </set>\r
+ </outcome>\r
+ <outcome value='Other'>\r
+ <set>\r
+ <parameter name='tmp.key-value' value='`$generate-FQPN-input.subnet-role`' />\r
+ </set>\r
+ </outcome>\r
+ </switch>\r
+ </outcome>\r
+ <outcome value='AddressPlanPolicyDG-Network_Role'>\r
+ <set>\r
+ <parameter name='tmp.key-value' value='`$generate-FQPN-input.network-role`' />\r
+ </set>\r
+ </outcome>\r
+ <outcome value='AddressPlanPolicyDG-Network_Id'>\r
+ <set>\r
+ <parameter name='tmp.key-value' value='`$generate-FQPN-input.network-id`' />\r
+ </set>\r
+ </outcome>\r
+ <outcome value='AddressPlanPolicyDG-Network_Collection'>\r
+ <set>\r
+ <parameter name='tmp.key-value' value='`$generate-FQPN-input.network-collection`' />\r
+ </set>\r
+ </outcome>\r
+ <outcome value='AddressPlanPolicyDG-Zone'>\r
+ <set>\r
+ <parameter name='tmp.key-value' value='`$generate-FQPN-input.zone`' />\r
+ </set>\r
+ </outcome>\r
+ <outcome value='Other'>\r
+ <return status='failure'>\r
+ <parameter name='ack-final' value='Y'/>\r
+ <parameter name="error-code" value="500" />\r
+ <parameter name="error-message" value="`'Unknown ADDRESS_PLAN_POLICIES: ' + $db.address-plan-policies.key-value-source`" />\r
+ </return>\r
+ </outcome>\r
+ </switch>\r
+ </block>\r
+ <switch test='`$split-index == 0`'>\r
+ <outcome value='true'>\r
+ <set>\r
+ <parameter name='tmp.final.key-value' value="`$tmp.key-value`" />\r
+ </set>\r
+ </outcome>\r
+ <outcome value='false'>\r
+ <set>\r
+ <parameter name='tmp.final.key-value' \r
+ value="`$tmp.final.key-value + ':' + $tmp.key-value`" />\r
+ </set>\r
+ </outcome>\r
+ </switch>\r
+ </for>\r
+ <set>\r
+ <parameter name='generate-FQPN-output.pools[$pool-index].key-name'\r
+ value='`$tmp.getPlanTopologyResponse.key-name`' />\r
+ <parameter name='generate-FQPN-output.pools[$pool-index].key-value'\r
+ value='`$tmp.final.key-value`' />\r
+ </set>\r
+ </for>\r
+ <set>\r
+ <parameter name='generate-FQPN-output.pools_length' \r
+ value='`$eipam-ip-block.getPlanTopologyResponse.TopologyDetails_length`' />\r
+ </set>\r
+ </block>\r
+ </outcome>\r
+ <outcome value=''>\r
+ <block atomic='true'>\r
+ <for index="resp-index" start="0" end="`$eipam-ip-block.getPlanTopologyResponse.TopologyDetails_length`">\r
+ <switch test='`$eipam-ip-block.plan-name == $eipam-ip-block.getPlanTopologyResponse.PlanName`'>\r
+ <outcome value='false'>\r
+ <return status="failure">\r
+ <parameter name="ack-final" value="Y" />\r
+ <parameter name="error-code" value="500"/>\r
+ <parameter name="error-message" value="`'eipam response plan-name ['+ $eipam-ip-block.getPlanTopologyResponse.PlanName + ' is not the same as input '+$eipam-ip-block.planName`" />\r
+ </return>\r
+ </outcome>\r
+ </switch>\r
+ <set>\r
+ <parameter name='pool-index'\r
+ value='`$eipam-ip-block.getPlanTopologyResponse.TopologyDetails[$resp-index].Level - 1`' />\r
+ </set>\r
+ <set>\r
+ <parameter name='tmp.final.key-value' value="" />\r
+ </set>\r
+ <set>\r
+ <parameter name='tmp.getPlanTopologyResponse.key-name' \r
+ value='`$eipam-ip-block.getPlanTopologyResponse.TopologyDetails[$resp-index].KeyName`' />\r
+ </set>\r
+ <execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliStringUtils' method='split' >\r
+ <parameter name="original_string" value="`$tmp.getPlanTopologyResponse.key-name`" />\r
+ <parameter name="regex" value=":" />\r
+ <parameter name="ctx_memory_result_key" value="tmp.split.key-name" />\r
+ </execute>\r
+ <for index="split-index" start="0" end="`$tmp.split.key-name_length`">\r
+ <set>\r
+ <parameter name='tmp.eipam.key-name' \r
+ value='`$tmp.split.key-name[$split-index]`' />\r
+ </set>\r
+ <block atomic='true'>\r
+ <get-resource plugin='org.onap.ccsdk.sli.adaptors.resource.sql.SqlResource' resource='SQL'\r
+ key='SELECT key_value_source from ADDRESS_PLAN_POLICIES WHERE key_name = $tmp.eipam.key-name '\r
+ pfx='db.address-plan-policies'>\r
+ <outcome value='failure'>\r
+ <return status='failure'>\r
+ <parameter name='ack-final' value='Y'/>\r
+ <parameter name="error-code" value="500" />\r
+ <parameter name="error-message" value="Error reading ADDRESS_PLAN_POLICIES table" />\r
+ </return>\r
+ </outcome>\r
+ <outcome value='not-found'>\r
+ <return status='failure'>\r
+ <parameter name='ack-final' value='Y'/>\r
+ <parameter name="error-code" value="500" />\r
+ <parameter name="error-message" value="`'No ADDRESS_PLAN_POLICIES entry found for key_name = ' + $eipam-ip-block.getPlanTopologyResponse.TopologyDetails[$key-index].KeyName`" />\r
+ </return>\r
+ </outcome>\r
+ </get-resource>\r
+ <get-resource plugin='org.onap.ccsdk.sli.adaptors.resource.sql.SqlResource' resource='SQL'\r
+ key='SELECT * from ROUTING_CHARACTERISTIC_MAPPING WHERE network_role = $generate-FQPN-input.network-role '\r
+ pfx='db.routing-characteristic_mapping[]'>\r
+ <outcome value='failure'>\r
+ <return status='failure'>\r
+ <parameter name='ack-final' value='Y'/>\r
+ <parameter name="error-code" value="500" />\r
+ <parameter name="error-message" value="Error reading ROUTING_CHARACTERISTIC_MAPPING table" />\r
+ </return>\r
+ </outcome>\r
+ <outcome value='not-found'>\r
+ <return status='failure'>\r
+ <parameter name='ack-final' value='Y'/>\r
+ <parameter name="error-code" value="500" />\r
+ <parameter name="error-message" value="`'No ROUTING_CHARACTERISTIC_MAPPING entry found for network_role = ' + $generate-FQPN-input.network-role`" />\r
+ </return>\r
+ </outcome>\r
+ </get-resource>\r
+ <set>\r
+ <parameter name='tmp.key-value' value='' />\r
+ </set>\r
+ <switch test='`$db.address-plan-policies.key-value-source`'>\r
+ <outcome value='AddressPlanPolicyDG-Routing_Characteristic'>\r
+ <block atomic="true">\r
+ <set>\r
+ <parameter name='tmp.key-value' value='-1' />\r
+ </set>\r
+ <switch test='`$db.routing-characteristic_mapping_length > 1`'>\r
+ <outcome value='true'>\r
+ <block>\r
+ <for index="routing-index" start="0" end="`$db.routing-characteristic_mapping_length`">\r
+ <switch test='`$db.routing-characteristic_mapping[$routing-index].vrf-name == $generate-FQPN-input.vrf-name`'>\r
+ <outcome value='true'>\r
+ <block atomic='true'>\r
+ <set>\r
+ <parameter name='tmp.key-value' value='`$db.routing-characteristic_mapping[$routing-index].routing-characteristic`' />\r
+ </set>\r
+ <return status='failure'></return>\r
+ </block>\r
+ </outcome>\r
+ </switch>\r
+ </for>\r
+ <return status='success'></return>\r
+ </block>\r
+ </outcome>\r
+ <outcome value='false'>\r
+ <set>\r
+ <parameter name='tmp.key-value' value='`$db.routing-characteristic_mapping[0].routing-characteristic`' />\r
+ </set>\r
+ </outcome>\r
+ </switch>\r
+ <switch test='`$tmp.key-value`'>\r
+ <outcome value='-1'>\r
+ <return status='failure'>\r
+ <parameter name='ack-final' value='Y'/>\r
+ <parameter name="error-code" value="500" />\r
+ <parameter name="error-message" value="No matching ROUTING_CHARACTERISTIC_MAPPING.vrf-name found" />\r
+ </return>\r
+ </outcome>\r
+ </switch>\r
+ </block>\r
+ </outcome>\r
+ <outcome value='AddressPlanPolicyDG-Location_Clli8'>\r
+ <set>\r
+ <parameter name='tmp.key-value' value='`$generate-FQPN-input.location-clli8`' />\r
+ </set>\r
+ </outcome>\r
+ <outcome value='AddressPlanPolicyDG-Vrf_Name'>\r
+ <switch test='`$generate-FQPN-input.vrf-name`'>\r
+ <outcome value=''>\r
+ <set>\r
+ <parameter name='tmp.key-value' value='`$db.routing-characteristic_mapping[0].vrf-name`' />\r
+ </set>\r
+ </outcome>\r
+ </switch>\r
+ </outcome>\r
+ <outcome value='cloud_region_id'>\r
+ <set>\r
+ <parameter name='tmp.key-value' value='`$generate-FQPN-input.aic-cloud-region`' />\r
+ </set>\r
+ </outcome>\r
+ <outcome value='AddressPlanPolicyDG-Complex_region'>\r
+ <set>\r
+ <parameter name='tmp.key-value' value='`$aai.complex.region`' />\r
+ </set>\r
+ </outcome>\r
+ <outcome value='AddressPlanPolicyDG-Network_Name'>\r
+ <set>\r
+ <parameter name='tmp.key-value' value='`$generate-FQPN-input.network-name`' />\r
+ </set>\r
+ </outcome>\r
+ <outcome value='AddressPlanPolicyDG-Subnet_Role'>\r
+ <switch test='`$generate-FQPN-input.subnet-role`' >\r
+ <outcome value=''>\r
+ <set>\r
+ <parameter name='tmp.key-value' value='STATIC' />\r
+ </set>\r
+ </outcome>\r
+ <outcome value='Other'>\r
+ <set>\r
+ <parameter name='tmp.key-value' value='`$generate-FQPN-input.subnet-role`' />\r
+ </set>\r
+ </outcome>\r
+ </switch>\r
+ </outcome>\r
+ <outcome value='AddressPlanPolicyDG-Network_Role'>\r
+ <set>\r
+ <parameter name='tmp.key-value' value='`$generate-FQPN-input.network-role`' />\r
+ </set>\r
+ </outcome>\r
+ <outcome value='AddressPlanPolicyDG-Network_Id'>\r
+ <set>\r
+ <parameter name='tmp.key-value' value='`$generate-FQPN-input.network-id`' />\r
+ </set>\r
+ </outcome>\r
+ <outcome value='AddressPlanPolicyDG-Network_Collection'>\r
+ <set>\r
+ <parameter name='tmp.key-value' value='`$generate-FQPN-input.network-collection`' />\r
+ </set>\r
+ </outcome>\r
+ <outcome value='AddressPlanPolicyDG-Zone'>\r
+ <set>\r
+ <parameter name='tmp.key-value' value='`$generate-FQPN-input.zone`' />\r
+ </set>\r
+ </outcome>\r
+ <outcome value='Other'>\r
+ <return status='failure'>\r
+ <parameter name='ack-final' value='Y'/>\r
+ <parameter name="error-code" value="500" />\r
+ <parameter name="error-message" value="`'Unknown ADDRESS_PLAN_POLICIES: ' + $db.address-plan-policies.key-value-source`" />\r
+ </return>\r
+ </outcome>\r
+ </switch>\r
+ </block>\r
+ <switch test='`$split-index == 0`'>\r
+ <outcome value='true'>\r
+ <set>\r
+ <parameter name='tmp.final.key-value' value="`$tmp.key-value`" />\r
+ </set>\r
+ </outcome>\r
+ <outcome value='false'>\r
+ <set>\r
+ <parameter name='tmp.final.key-value' \r
+ value="`$tmp.final.key-value + ':' + $tmp.key-value`" />\r
+ </set>\r
+ </outcome>\r
+ </switch>\r
+ </for>\r
+ <set>\r
+ <parameter name='generate-FQPN-output.pools[$pool-index].key-name'\r
+ value='`$tmp.getPlanTopologyResponse.key-name`' />\r
+ <parameter name='generate-FQPN-output.pools[$pool-index].key-value'\r
+ value='`$tmp.final.key-value`' />\r
+ </set>\r
+ </for>\r
+ <set>\r
+ <parameter name='generate-FQPN-output.pools_length' \r
+ value='`$eipam-ip-block.getPlanTopologyResponse.TopologyDetails_length`' />\r
+ </set>\r
+ </block>\r
+ </outcome>\r
+ </switch>\r
+ </block>\r
+ </method>\r
+</service-logic>
\ No newline at end of file