--- /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='vf-module-topology-vlan-tagging-ip-addresses' mode='sync'>\r
+ <block atomic="true">\r
+ <switch test='`$tmp.vt-ip.type`'>\r
+ <outcome value=''>\r
+ <return status='failure'>\r
+ <parameter name='error-code' value='500' />\r
+ <parameter name='error-message' value='type is required' />\r
+ </return>\r
+ </outcome>\r
+ </switch>\r
+ <switch test='`$tmp.vt-ip.network-instance-group-function`'>\r
+ <outcome value=''>\r
+ <return status='failure'>\r
+ <parameter name='error-code' value='500' />\r
+ <parameter name='error-message' value='network-instance-group-function is required for FIXED ip request' />\r
+ </return>\r
+ </outcome>\r
+ </switch>\r
+ <switch test='`$tmp.vt-ip.ip-version`'>\r
+ <outcome value=''>\r
+ <return status='failure'>\r
+ <parameter name='error-code' value='500' />\r
+ <parameter name='error-message' value='ip-version is required' />\r
+ </return>\r
+ </outcome>\r
+ <outcome value='ipv4'>\r
+ <set>\r
+ <parameter name='tmp.address-family' value='4' />\r
+ <parameter name='tmp.sql.address-family' value='%4' />\r
+ </set>\r
+ </outcome>\r
+ <outcome value='ipv6'>\r
+ <set>\r
+ <parameter name='tmp.address-family' value='6' />\r
+ <parameter name='tmp.sql.address-family' value='%6' />\r
+ </set>\r
+ </outcome>\r
+ </switch>\r
+ <set>\r
+ <parameter name='eipam-ip-block.' value='' />\r
+ </set>\r
+ <switch test='`$tmp.vt-ip.type`'>\r
+ <outcome value='FIXED'>\r
+ <block atomic='true'>\r
+ <switch test='`$tmp.vt-ip.vnfc-name`'>\r
+ <outcome value=''>\r
+ <return status='failure'>\r
+ <parameter name='error-code' value='500' />\r
+ <parameter name='error-message' value='vnfc-name is required for FIXED ip request' />\r
+ </return>\r
+ </outcome>\r
+ </switch>\r
+ <switch test='`$tmp.vt-ip.vf-module-id`'>\r
+ <outcome value=''>\r
+ <return status='failure'>\r
+ <parameter name='error-code' value='500' />\r
+ <parameter name='error-message' value='vf-module-id is required' />\r
+ </return>\r
+ </outcome>\r
+ </switch>\r
+ <switch test='`$tmp.vt-ip.sequence-number`'>\r
+ <outcome value=''>\r
+ <return status='failure'>\r
+ <parameter name='error-code' value='500' />\r
+ <parameter name='error-message' value='seq-num is required' />\r
+ </return>\r
+ </outcome>\r
+ </switch>\r
+ <set>\r
+ <parameter name="tmp.selected-client-key" \r
+ value="`$tmp.vt-ip.vm-type + '|' +\r
+ $tmp.vt-ip.vnfc-name + '|' +\r
+ $tmp.vt-ip.network-instance-group-function + '|' + \r
+ $tmp.vt-ip.type + '|' + \r
+ $tmp.address-family + '|' + \r
+ $tmp.vt-ip.sequence-number`" />\r
+ <!-- \r
+fixed-ip client-key:\r
+vm-type + VFCname + network-instance-group-function + "FIXED" + [ip-version(4/6)] + seqNo\r
+ seqNo required for unique, but not required for shared\r
+-->\r
+ </set>\r
+ <set>\r
+ <parameter name="tmp.eipam.info" value="`$tmp.vt-ip.vf-module-id`"/>\r
+ </set>\r
+ </block>\r
+ </outcome>\r
+ <outcome value='VIP'>\r
+ <block atomic='true'>\r
+ <switch test='`$tmp.vt-ip.nf-role`'>\r
+ <outcome value=''>\r
+ <return status='failure'>\r
+ <parameter name='error-code' value='500' />\r
+ <parameter name='error-message' value='nf-role is required for VIP ip request' />\r
+ </return>\r
+ </outcome>\r
+ </switch>\r
+ <switch test="`$tmp.vt-ip.network-instance-group-id == '' `">\r
+ <outcome value='true'>\r
+ <return status='failure'>\r
+ <parameter name='error-code' value='500' />\r
+ <parameter name='error-message' value='network-isntance-group-id is required for VIP' />\r
+ </return>\r
+ </outcome>\r
+ </switch>\r
+ <set>\r
+ <parameter name="tmp.eipam.info" value="`$tmp.vt-ip.network-instance-group-id`"/>\r
+ </set>\r
+ <set>\r
+ <parameter name='tmp.selected-client-key' \r
+ value="`$tmp.vt-ip.nf-role + '|' + \r
+ $tmp.vt-ip.network-instance-group-function + '|' +\r
+ $tmp.vt-ip.type + '|' + \r
+ $tmp.vt-ip.ip-version`" />\r
+ <!-- \r
+loating-ip client-key:\r
+nf-role + network-instance-group-function + "VIP" + [ip-version(4/6)]\r
+-->\r
+ </set>\r
+ </block>\r
+ </outcome>\r
+ </switch>\r
+ <switch test="`$tmp.vt-ip.network-id == '' and $tmp.vt-ip.network-instance-group-id == '' `">\r
+ <outcome value='true'>\r
+ <return status='failure'>\r
+ <parameter name='error-code' value='500' />\r
+ <parameter name='error-message' value='either network-id or network-isntance-group-id is required' />\r
+ </return>\r
+ </outcome>\r
+ </switch>\r
+ <switch test="`$tmp.vt-ip.network-id != '' `">\r
+ <outcome value='true'>\r
+ <block atomic='true'>\r
+ <set>\r
+ <parameter name='tmp.sql' \r
+ value="`'SELECT * from EIPAM_IP_SUBNETS WHERE network_id = ' + \r
+ '$tmp.vt-ip.network-id AND address_family like $tmp.sql.address-family'`" />\r
+ </set>\r
+ <get-resource plugin='org.onap.ccsdk.sli.adaptors.resource.sql.SqlResource' resource='SQL'\r
+ key='`$tmp.sql`' pfx='db.selected-subnet-data[]'>\r
+ <outcome value='failure'>\r
+ <return status='failure'>\r
+ <parameter name='error-code' value='500' />\r
+ <parameter name='error-message' value = 'Failed to read EIPAM_IP_SUBNETS table' />\r
+ </return>\r
+ </outcome>\r
+ <outcome value='not-found'>\r
+ <return status='failure'>\r
+ <parameter name='error-code' value='500' />\r
+ <parameter name='error-message' value = "`'No EIPAM_IP_SUBNETS entry found with network-id = ' + $tmp.vt-ip.network-id + ' and address_family = ' + $tmp.address-family`" />\r
+ </return>\r
+ </outcome>\r
+ </get-resource>\r
+ <set>\r
+ <parameter name="eipam-ip-block.plans[0].requests[0].network-id" \r
+ value="`$tmp.vt-ip.network-id`"/>\r
+ </set>\r
+ </block>\r
+ </outcome>\r
+ <outcome value='false'>\r
+ <switch test="`$tmp.vt-ip.network-instance-group-id != '' `">\r
+ <outcome value='true'>\r
+ <block atomic='true'>\r
+ <set>\r
+ <parameter name='tmp.sql' \r
+ value="`'SELECT * from EIPAM_IP_SUBNETS WHERE network_instance_group_id = '+ \r
+ '$tmp.vt-ip.network-instance-group-id AND address_family like $tmp.sql.address-family'`" />\r
+ </set>\r
+ <get-resource plugin='org.onap.ccsdk.sli.adaptors.resource.sql.SqlResource' resource='SQL'\r
+ key='`$tmp.sql`' pfx='db.selected-subnet-data[]'>\r
+ <outcome value='failure'>\r
+ <return status='failure'>\r
+ <parameter name='error-code' value='500' />\r
+ <parameter name='error-message' value = 'Failed to read EIPAM_IP_SUBNETS table' />\r
+ </return>\r
+ </outcome>\r
+ <outcome value='not-found'>\r
+ <return status='failure'>\r
+ <parameter name='error-code' value='500' />\r
+ <parameter name='error-message' value = "`'No EIPAM_IP_SUBNETS entry found with network-instance-group-id = ' + $tmp.vt-ip.network-instance-group-id + ' and address_family = ' + $tmp.address-family`" />\r
+ </return>\r
+ </outcome>\r
+ </get-resource>\r
+ <set>\r
+ <parameter name="eipam-ip-block.plans[0].requests[0].network-instance-group-id" \r
+ value="`$tmp.vt-ip.network-instance-group-id`"/>\r
+ </set>\r
+ </block>\r
+ </outcome>\r
+ </switch>\r
+ </outcome>\r
+ </switch>\r
+ <set>\r
+ <parameter name='tmp.level4-key-found' value='false' />\r
+ </set>\r
+ <for index='didx' start='0' end='`$db.selected-subnet-data_length`' >\r
+ <set>\r
+ <parameter name='tmp.sql' \r
+ value="`'SELECT a.entity_id, a.key_name, a.key_value, a.level from EIPAM_IP_SUBNET_KEYS a where level = (SELECT MAX(level) from EIPAM_IP_SUBNET_KEYS b where b.entity_id = a.entity_id and entity_id = ' + ' $db.selected-subnet-data[$didx].entity-id )'`" />\r
+ </set>\r
+ <get-resource plugin='org.onap.ccsdk.sli.adaptors.resource.sql.SqlResource' resource='SQL'\r
+ key='`$tmp.sql`' pfx='db.selected-subnet-keys'>\r
+ <outcome value='failure'>\r
+ <return status='failure'>\r
+ <parameter name='error-code' value='500' />\r
+ <parameter name='error-message' value = 'Failed to read EIPAM_IP_SUBNET_KEYS table to find MAX level by entity_id' />\r
+ </return>\r
+ </outcome>\r
+ <outcome value='success'>\r
+ <switch test="`$db.selected-subnet-keys.level == '4' `">\r
+ <outcome value='false'>\r
+ <block></block>\r
+ </outcome>\r
+ <outcome value='true'>\r
+ <block>\r
+ <set>\r
+ <parameter name='tmp.level4-key-found' value='true' />\r
+ </set>\r
+ <set>\r
+ <parameter name='tmp.selected-entity-id' value='`$db.selected-subnet-keys.entity-id`' />\r
+ </set>\r
+ <set>\r
+ <parameter name='tmp.selected-plan-name' value='`$db.selected-subnet-data[$didx].plan-name`' />\r
+ </set>\r
+ <break/>\r
+ </block>\r
+ </outcome>\r
+ </switch>\r
+ </outcome>\r
+ </get-resource>\r
+ </for>\r
+ <switch test="`$tmp.level4-key-found`">\r
+ <outcome value='false'>\r
+ <return status='failure'>\r
+ <parameter name='error-code' value='500' />\r
+ <parameter name='error-message' value='No level 4 KeyName found in EIPAM_IP_SUBNET_KEYS' />\r
+ </return>\r
+ </outcome>\r
+ </switch>\r
+ <get-resource plugin='org.onap.ccsdk.sli.adaptors.resource.sql.SqlResource' resource='SQL'\r
+ key='SELECT * from EIPAM_IP_SUBNET_KEYS \r
+ where entity_id = $tmp.selected-entity-id order by level'\r
+ pfx='db.eipam-subnet-keys[]'>\r
+ <outcome value='failure'>\r
+ <return status='failure'>\r
+ <parameter name='error-code' value='500' />\r
+ <parameter name='error-message' value = 'Failed to read EIPAM_IP_SUBNET_KEYS table by entity_id' />\r
+ </return>\r
+ </outcome>\r
+ </get-resource>\r
+ <for index='key' start='0' end='`$db.eipam-subnet-keys_length`' >\r
+ <set>\r
+ <parameter name="eipam-ip-block.plans[0].requests[0].pools[$key].key-name" \r
+ value="`$db.eipam-subnet-keys[$key].key-name`"/>\r
+ <parameter name="eipam-ip-block.plans[0].requests[0].pools[$key].key-value" \r
+ value="`$db.eipam-subnet-keys[$key].key-value`"/>\r
+ </set>\r
+ </for>\r
+ <set>\r
+ <parameter name='eipam-ip-block.plans[0].plan-name' value='`$tmp.selected-plan-name`' />\r
+ <parameter name='eipam-ip-block.plans[0].address-family' value="`$tmp.vt-ip.ip-version`" />\r
+ <parameter name='eipam-ip-block.plans[0].requests[0].client-key' \r
+ value="`$tmp.selected-client-key`" />\r
+ <parameter name="eipam-ip-block.plans[0].requests[0].info" \r
+ value="`$tmp.eipam.info`"/>\r
+ <parameter name="eipam-ip-block.plans[0].requests[0].pools_length" value="4"/>\r
+ <parameter name='eipam-ip-block.plans[0].requests_length' value='1' />\r
+ <parameter name="eipam-ip-block.plans_length" value="1"/>\r
+ </set>\r
+ <execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliPluginUtils' method='printContext' >\r
+ <parameter name='filename' value='/var/tmp/vlan-tag-ip.log' />\r
+ </execute>\r
+ <execute plugin="com.att.sdnctl.sli.plugin.eipam.EIPAMPlugin" method="assignIPAddress">\r
+ <outcome value='failure'>\r
+ <block atomic="true">\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 obtaining ip addresses from EIPAM: ' + $error-message`" />\r
+ </return>\r
+ </block>\r
+ </outcome>\r
+ </execute>\r
+ </block>\r
+ </method>\r
+</service-logic>
\ No newline at end of file