- <set>\r
- <parameter name='tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-type'\r
- value='`$db.vf-module-to-vfc-mapping[$vm-type-index].vm-type`' />\r
- <parameter name='tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].nfc-naming-code'\r
- value='`$db.vfc-model.nfc-naming-code`' />\r
- <parameter name='tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-type-tag'\r
- value='`$db.vfc-model.vm-type-tag`' />\r
- <parameter name='tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-count'\r
- value='`$db.vf-module-to-vfc-mapping[$vm-type-index].vm-count`' />\r
- </set>\r
- <set>\r
- <parameter name='tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-names.vm-name_length'\r
- value='`$db.vf-module-to-vfc-mapping[$vm-type-index].vm-count`' />\r
- </set>\r
- <for index='vm-index' start='0' end='`$db.vf-module-to-vfc-mapping[$vm-type-index].vm-count`' >\r
- <block atomic="true">\r
- <set>\r
- <parameter name='generate-unique-name-input.index-table-name' value='VM_NAME_INDEX' />\r
- <parameter name='generate-unique-name-input.index-table-prefix-column' value='vm_name_prefix' />\r
- <parameter name='generate-unique-name-input.name-table-type' value='VM_INSTANCE' />\r
- <parameter name='generate-unique-name-input.prefix' value="`$service-data.vnfs.vnf[$vnf-index].vnf-name + $db.vfc-model.nfc-naming-code`" />\r
- <parameter name='generate-unique-name-input.index-length' value='3' />\r
- </set>\r
- <call module='GENERIC-RESOURCE-API' rpc='generate-unique-name' mode='sync' >\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="`$generate-unique-name-output.error-message`" />\r
- </return>\r
- </outcome>\r
- <outcome value='success'>\r
- <set>\r
- <parameter name='tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-names.vm-name[$vm-index]' value='`$generate-unique-name-output.generated-name`' />\r
- </set>\r
- </outcome>\r
- </call>\r
- </block>\r
- </for>\r
- <get-resource plugin='org.onap.ccsdk.sli.adaptors.resource.sql.SqlResource' resource='SQL'\r
- key='SELECT * from VFC_TO_NETWORK_ROLE_MAPPING WHERE vfc_customization_uuid = $db.vf-module-to-vfc-mapping[$vm-type-index].vfc-customization-uuid'\r
- pfx='db.vfc-to-network-role-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 VFC_TO_NETWORK_ROLE_MAPPING table" />\r
- </return>\r
- </outcome>\r
- <outcome value='not-found'>\r
- <set>\r
- <parameter name='db.vfc-to-network-role-mapping_length' value='0' />\r
- </set>\r
- </outcome>\r
- </get-resource>\r
- <for index='network-role-index' start='0' end='`$db.vfc-to-network-role-mapping_length`' >\r
- <block atomic="true">\r
- <set>\r
- <parameter name='network-index' value='-1' />\r
- </set>\r
- <for silentFailure='true' index='idx' start='0' end='`$service-data.networks.network_length`' >\r
- <switch test='`$service-data.networks.network[$idx].network-data.network-topology.network-topology-identifier-structure.network-role == $db.vfc-to-network-role-mapping[$network-role-index].network-role`'>\r
- <outcome value='true'>\r
- <block>\r
- <set>\r
- <parameter name='network-index' value='`$idx`' />\r
- </set>\r
- <break></break>\r
- </block>\r
- </outcome>\r
- </switch>\r
- </for>\r
- <switch test='`$network-index`'>\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 network found in MD-SAL with network-role ' + $db.vfc-to-network-role-mapping[$network-role-index].network-role`" />\r
- </return>\r
- </outcome>\r
- </switch>\r
- <!--This isn't a node in MD-SAL, but we need to save this for later when we are doing EIPAM processing-->\r
- <set>\r
- <parameter name='tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-networks.vm-network[$network-role-index].network-id'\r
- value='`$service-data.networks.network[$idx].network-data.network-topology.network-topology-identifier-structure.network-id`' />\r
- </set>\r
- <set>\r
- <parameter name='tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-networks.vm-network[$network-role-index].network-role'\r
- value='`$db.vfc-to-network-role-mapping[$network-role-index].network-role`' />\r
- <parameter name='tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-networks.vm-network[$network-role-index].network-role-tag'\r
- value='`$db.vfc-to-network-role-mapping[$network-role-index].network-role-tag`' />\r
- </set>\r
- <switch test='`$db.vfc-to-network-role-mapping[$network-role-index].ipv4-ip-version`'>\r
- <outcome value=''>\r
- <set>\r
- <parameter name='network-information-index' value='-1' />\r
- </set>\r
- </outcome>\r
- <outcome value='4'>\r
- <block atomic="true">\r
- <set>\r
- <parameter name='network-information-index' value='0' />\r
- </set>\r
- <set>\r
- <parameter name='tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-networks.vm-network[$network-role-index].network-information-items.network-information-item[$network-information-index].ip-version'\r
- value='4' />\r
- <parameter name='tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-networks.vm-network[$network-role-index].network-information-items.network-information-item[$network-information-index].use-dhcp'\r
- value='`$db.vfc-to-network-role-mapping[$network-role-index].ipv4-use-dhcp`' />\r
- <parameter name='tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-networks.vm-network[$network-role-index].network-information-items.network-information-item[$network-information-index].ip-count'\r
- value='`$db.vfc-to-network-role-mapping[$network-role-index].ipv4-count`' />\r
- </set>\r
- </block>\r
- </outcome>\r
- </switch>\r
- <switch test='`$db.vfc-to-network-role-mapping[$network-role-index].ipv6-ip-version`'>\r
- <outcome value=''>\r
- <block></block>\r
- </outcome>\r
- <outcome value='6'>\r
- <block atomic="true">\r
- <set>\r
- <parameter name='network-information-index' value='`$network-information-index + 1`' />\r
- </set>\r
- <set>\r
- <parameter name='tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-networks.vm-network[$network-role-index].network-information-items.network-information-item[$network-information-index].ip-version'\r
- value='6' />\r
- <parameter name='tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-networks.vm-network[$network-role-index].network-information-items.network-information-item[$network-information-index].use-dhcp'\r
- value='`$db.vfc-to-network-role-mapping[$network-role-index].ipv6-use-dhcp`' />\r
- <parameter name='tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-networks.vm-network[$network-role-index].network-information-items.network-information-item[$network-information-index].ip-count'\r
- value='`$db.vfc-to-network-role-mapping[$network-role-index].ipv6-count`' />\r
- </set>\r
- </block>\r
- </outcome>\r
- </switch>\r
- <switch test='`$network-information-index`'>\r
- <outcome value='-1'>\r
- <block></block>\r
- </outcome>\r
- <outcome value='Other'>\r
- <set>\r
- <parameter name='tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-networks.vm-network[$network-role-index].network-information-items.network-information-item_length'\r
- value='`$network-information-index + 1`' />\r
- </set>\r
- </outcome>\r
- </switch>\r
- </block>\r
- </for>\r
- <set>\r
- <parameter name='tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-networks.vm-network_length'\r
- value='`$db.vfc-to-network-role-mapping_length`' />\r
- </set>\r
- </block>\r
- </for>\r
- <set>\r
- <parameter name='plans-index' value='0' />\r
- </set>\r
- <for index='vm-type-index' start='0' end='`$tmp.vf-module-topology.vf-module-assignments.vms.vm_length`' >\r
- <block atomic="true">\r
- <for index='network-role-index' start='0' end='`$tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-networks.vm-network_length`' >\r
- <block atomic="true">\r
- <for index='ip-version-index' start='0' end='`$tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-networks.vm-network[$network-role-index].network-information-items.network-information-item_length`' >\r
- <switch test='`$tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-networks.vm-network[$network-role-index].network-information-items.network-information-item[$ip-version-index].use-dhcp`'>\r
- <outcome value='N'>\r
- <block atomic="true">\r
- <get-resource plugin='org.onap.ccsdk.sli.adaptors.resource.sql.SqlResource' resource='SQL'\r
- key='SELECT * from EIPAM_IP_SUBNETS WHERE network_id = $tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-networks.vm-network[$network-role-index].network-id\r
- AND address_family = $tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-networks.vm-network[$network-role-index].network-information-items.network-information-item[$ip-version-index].ip-version'\r
- pfx='db.eipam-ip-subnets[]'>\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 EIPAM_IP_SUBNETS 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 entries found in EIPAM_IP_SUBNETS table for network ID ' + $tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-networks.vm-network[$network-role-index].network-id + ' and address family ' + $tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-networks.vm-network[$network-role-index].network-information-items.network-information-item[$ip-version-index].ip-version`" />\r
- </return>\r
- </outcome>\r
- </get-resource>\r
- <set>\r
- <parameter name='max-level' value='-1' />\r
- </set>\r
- <for index='subnets-index' start='0' end='`$db.eipam-ip-subnets_length`' >\r
- <block atomic="true">\r
- <get-resource plugin='org.onap.ccsdk.sli.adaptors.resource.sql.SqlResource' resource='SQL'\r
- key='SELECT * from EIPAM_IP_SUBNET_KEYS WHERE entity_id = $db.eipam-ip-subnets[$subnets-index].entity-id'\r
- pfx='db.eipam-ip-subnet-keys[]'>\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 EIPAM_IP_SUBNET_KEYS 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 entries found in EIPAM_IP_SUBNET_KEYS table for entity ID ' + $db.eipam-ip-subnets[$subnets-index].entity-id`" />\r
- </return>\r
- </outcome>\r
- </get-resource>\r
- <for index='keys-index' start='0' end='`$db.eipam-ip-subnet-keys_length`' >\r
- <block atomic="true">\r
- <switch test='`$db.eipam-ip-subnet-keys[$keys-index].level > $max-level`'>\r
- <outcome value='true'>\r
- <set>\r
- <parameter name='max-level' value='`$db.eipam-ip-subnet-keys[$keys-index].level`' />\r
- <parameter name='selected-entity-id' value='`$db.eipam-ip-subnet-keys[$keys-index].entity-id`' />\r
- <parameter name='selected-plan-name' value='`$db.eipam-ip-subnets[$subnets-index].plan-name`' />\r
- </set>\r
- </outcome>\r
- </switch>\r
- </block>\r
- </for>\r
- <get-resource plugin='org.onap.ccsdk.sli.adaptors.resource.sql.SqlResource' resource='SQL'\r
- key='SELECT * from EIPAM_IP_SUBNET_KEYS WHERE entity_id = $selected-entity-id order by level'\r
- pfx='db.eipam-ip-subnet-keys[]'>\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 EIPAM_IP_SUBNET_KEYS 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 entries found in EIPAM_IP_SUBNET_KEYS table for entity ID ' + $selected-entity-id`" />\r
- </return>\r
- </outcome>\r
- </get-resource>\r
- <for index='request-index' start='0' end='`$tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-networks.vm-network[$network-role-index].network-information-items.network-information-item[$ip-version-index].ip-count`' >\r
- <block atomic="true">\r
- <for index='level-index' start='0' end='`$db.eipam-ip-subnet-keys_length`' >\r
- <set>\r
- <parameter name='eipam-ip-block.plans[$plans-index].requests[$request-index].pools[$level-index].key-name'\r
- value='`$db.eipam-ip-subnet-keys[$level-index].key-name`' />\r
- <parameter name='eipam-ip-block.plans[$plans-index].requests[$request-index].pools[$level-index].key-value'\r
- value='`$db.eipam-ip-subnet-keys[$level-index].key-value`' />\r
- </set>\r
- </for>\r
- <set>\r
- <parameter name='eipam-ip-block.plans[$plans-index].requests[$request-index].pools_length'\r
- value='`$db.eipam-ip-subnet-keys_length`' />\r
- </set>\r
- <set>\r
- <parameter name='generate-unique-name-input.index-table-name' value='EIPAM_CLIENT_KEY_INDEX' />\r
- <parameter name='generate-unique-name-input.index-table-prefix-column' value='vnf_name_prefix' />\r
- <parameter name='generate-unique-name-input.name-table-type' value='CLIENT_KEY' />\r
- <parameter name='generate-unique-name-input.prefix' value="`$service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-topology.vnf-topology-identifier-structure.vnf-name + $tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].nfc-naming-code + ':' + $tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-networks.vm-network[$network-role-index].network-id + ':' + $tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-networks.vm-network[$network-role-index].network-information-items.network-information-item[$ip-version-index].ip-version + ':'`" />\r
- <parameter name='generate-unique-name-input.index-length' value='' />\r
- </set>\r
- <call module='GENERIC-RESOURCE-API' rpc='generate-unique-name' mode='sync' >\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="`$generate-unique-name-output.error-message`" />\r
- </return>\r
- </outcome>\r
- </call>\r
- <set>\r
- <parameter name='eipam-ip-block.plans[$plans-index].requests[$request-index].client-key'\r
- value='`$generate-unique-name-output.generated-name`' />\r
- <parameter name='eipam-ip-block.plans[$plans-index].requests[$request-index].info'\r
- value='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-id`' />\r
- <parameter name='eipam-ip-block.plans[$plans-index].requests[$request-index].mask'\r
- value='32' />\r
- </set>\r
- </block>\r
- </for>\r
- <set>\r
- <parameter name='eipam-ip-block.plans[$plans-index].requests_length'\r
- value='`$tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-networks.vm-network[$network-role-index].network-information-items.network-information-item[$ip-version-index].ip-count`' />\r
- </set>\r
- </block>\r
- </for>\r
- <set>\r
- <parameter name='eipam-ip-block.plans[$plans-index].plan-name' value='`$selected-plan-name`' />\r
- <parameter name='eipam-ip-block.plans[$plans-index].address-family'\r
- value='`$tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-networks.vm-network[$network-role-index].network-information-items.network-information-item[$ip-version-index].ip-version`' />\r
- </set>\r
- <set>\r
- <parameter name='plans-index' value='`$plans-index + 1`' />\r
- </set>\r
- </block>\r
- </outcome>\r
- </switch>\r
- </for>\r
- </block>\r
- </for>\r
- </block>\r
- </for>\r
- <set>\r
- <parameter name='eipam-ip-block.plans_length' value='`$plans-index`' />\r
- </set>\r
- <!--EIPAM plug-in needs this attribute set with this name-->\r
- <set>\r
- <parameter name='service-data.service-information.service-type' value='`$service-data.service-information.subscription-service-type`' />\r
- </set>\r
- <switch test='`$plans-index > 0`'>\r
- <outcome value='true'>\r
- <execute plugin="com.att.sdnctl.sli.plugin.eipam.EIPAMPlugin" method="assignIPAddress">\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 obtaining new address blocks from EIPAM." />\r
- </return>\r
- </outcome>\r
- </execute>\r