Generic resource API DG catch up
[sdnc/oam.git] / platform-logic / generic-resource-api / src / main / xml / GENERIC-RESOURCE-API_vf-module-topology-vlan-tagging-ip-addresses.xml
diff --git a/platform-logic/generic-resource-api/src/main/xml/GENERIC-RESOURCE-API_vf-module-topology-vlan-tagging-ip-addresses.xml b/platform-logic/generic-resource-api/src/main/xml/GENERIC-RESOURCE-API_vf-module-topology-vlan-tagging-ip-addresses.xml
new file mode 100644 (file)
index 0000000..9a7a73b
--- /dev/null
@@ -0,0 +1,289 @@
+<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