--- /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-activate' mode='sync'>\r
+ <block atomic="true">\r
+ <save plugin="org.onap.ccsdk.sli.adaptors.aai.AAIService"\r
+ resource="custom-query"\r
+ key="format = 'resource&nodesOnly=true'"\r
+ force="true"\r
+ local-only="false"\r
+ pfx="tmp.aai.vnf">\r
+ <parameter name="start[0]" value="`'/network/generic-vnfs/generic-vnf/' + $vf-module-topology-operation-input.vnf-information.vnf-id `" />\r
+ <parameter name="start_length" value="1" />\r
+ <parameter name="query" value="query/cloud-region-fromVnf" />\r
+ <outcome value='failure'>\r
+ <block atomic="true">\r
+ <set>\r
+ <parameter name="error-message" value="Failed call to AAI custom query: cloud-region-fromVnf" />\r
+ </set>\r
+ </block>\r
+ </outcome>\r
+ <outcome value='not-found'>\r
+ <block atomic="true">\r
+ <set>\r
+ <parameter name="error-message" value="No cloud region returned from AAI: cloud-region-fromVnf" />\r
+ </set>\r
+ </block>\r
+ </outcome>\r
+ </save>\r
+ <for index='result-idx' start='0' end='`$tmp.aai.vnf.results_length`' >\r
+ <block atomic="true">\r
+ <switch test='`$tmp.aai.vnf.results[$result-idx].cloud-region.cloud-region-id`'>\r
+ <outcome value=''>\r
+ <block></block>\r
+ </outcome>\r
+ <outcome value='Other'>\r
+ <set>\r
+ <parameter name='tmp.cloud-region-id' value='`$tmp.aai.vnf.results[$result-idx].cloud-region.cloud-region-id`' />\r
+ </set>\r
+ </outcome>\r
+ </switch>\r
+ </block>\r
+ </for>\r
+ <set>\r
+ <parameter name='tmp.vlan-vnfc-instance-groups.'\r
+ value='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-assignments.vlan-vnfc-instance-groups.`' />\r
+ </set>\r
+ <for index='vvig-index' start='0' end='`$tmp.vlan-vnfc-instance-groups.vlan-vnfc-instance-group_length`' >\r
+ <switch test='`$tmp.vlan-vnfc-instance-groups.vlan-vnfc-instance-group[$vvig-index].vnfcs.vnfc_length`'>\r
+ <outcome value=''>\r
+ <block></block>\r
+ </outcome>\r
+ <outcome value='0'>\r
+ <block></block>\r
+ </outcome>\r
+ <outcome value='Other'>\r
+ <block atomic="true">\r
+ <switch test='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-sub-interface-groups.vnf-sub-interface-group_length`'>\r
+ <outcome value=''>\r
+ <set>\r
+ <parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-sub-interface-groups.vnf-sub-interface-group_length'\r
+ value='0' />\r
+ </set>\r
+ </outcome>\r
+ </switch>\r
+ <set>\r
+ <parameter name='parent-port-role'\r
+ value='`$tmp.vlan-vnfc-instance-groups.vlan-vnfc-instance-group[$vvig-index].vnfcs.vnfc[0].vnic-groups.vnic-group[0].vnic-interface-role`' />\r
+ <parameter name='vnfc-instance-group-function'\r
+ value='`$tmp.vlan-vnfc-instance-groups.vlan-vnfc-instance-group[$vvig-index].instance-group-function`' />\r
+ <parameter name='network-instance-group-function'\r
+ value='`$tmp.vlan-vnfc-instance-groups.vlan-vnfc-instance-group[$vvig-index].vnfcs.vnfc[0].vnic-groups.vnic-group[0].network-instance-group-function`' />\r
+ </set>\r
+ <set>\r
+ <parameter name='vsig-index' value='-1' />\r
+ </set>\r
+ <for index='idx' start='0' end='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-sub-interface-groups.vnf-sub-interface-group_length`' >\r
+ <switch test='`\r
+ $parent-port-role == $service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-sub-interface-groups.vnf-sub-interface-group[$idx].parent-port-role\r
+ and $vnfc-instance-group-function == $service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-sub-interface-groups.vnf-sub-interface-group[$idx].vnfc-instance-group-function\r
+ and $network-instance-group-function == $service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-sub-interface-groups.vnf-sub-interface-group[$idx].network-instance-group-function\r
+`'>\r
+ <outcome value='true'>\r
+ <block>\r
+ <set>\r
+ <parameter name='vsig-index' value='`$idx`' />\r
+ </set>\r
+ <break/>\r
+ </block>\r
+ </outcome>\r
+ </switch>\r
+ </for>\r
+ <switch test='`$vsig-index`'>\r
+ <outcome value='-1'>\r
+ <block>\r
+ <set>\r
+ <parameter name='vsig-index'\r
+ value='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-sub-interface-groups.vnf-sub-interface-group_length`' />\r
+ </set>\r
+ <set>\r
+ <parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-sub-interface-groups.vnf-sub-interface-group[$vsig-index].parent-port-role'\r
+ value='`$parent-port-role`' />\r
+ <parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-sub-interface-groups.vnf-sub-interface-group[$vsig-index].vnfc-instance-group-function'\r
+ value='`$vnfc-instance-group-function`' />\r
+ <parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-sub-interface-groups.vnf-sub-interface-group[$vsig-index].network-instance-group-function'\r
+ value='`$network-instance-group-function`' />\r
+ </set>\r
+ <set>\r
+ <parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-sub-interface-groups.vnf-sub-interface-group_length'\r
+ value='`$vsig-index + 1`' />\r
+ </set>\r
+ </block>\r
+ </outcome>\r
+ </switch>\r
+ <save plugin="org.onap.ccsdk.sli.adaptors.aai.AAIService"\r
+ resource="custom-query"\r
+ key="format = 'resource'"\r
+ force="true"\r
+ local-only="false"\r
+ pfx="tmp.aai.network">\r
+ <parameter name="start[0]" value="`'/cloud-infrastructure/cloud-regions/cloud-region/' + $prop.cloud-region.cloud-owner + '/' + $tmp.cloud-region-id`" />\r
+ <parameter name="start_length" value="1" />\r
+ <parameter name="query" value="`'/query/network-name-fromNetwork-role?networkRole=' + $service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-sub-interface-groups.vnf-sub-interface-group[$vsig-index].parent-port-role`" />\r
+ <outcome value='failure'>\r
+ <return status='failure'>\r
+ <parameter name='error-code' value='500' />\r
+ <parameter name='error-message' value="`'Failed to get network data for network role '\r
+ + $service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-sub-interface-groups.vnf-sub-interface-group[$vsig-index].parent-port-role`" />\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="`'Failed to get network data for network role '\r
+ + $service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-sub-interface-groups.vnf-sub-interface-group[$vsig-index].parent-port-role`" />\r
+ </return>\r
+ </outcome>\r
+ </save>\r
+ <set>\r
+ <parameter name='network-name' value='`$tmp.aai.network.results[0].l3-network.network-name`' />\r
+ </set>\r
+ <switch test='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-sub-interface-groups.vnf-sub-interface-group[$vsig-index].vnfcs.vnfc_length`'>\r
+ <outcome value=''>\r
+ <set>\r
+ <parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-sub-interface-groups.vnf-sub-interface-group[$vsig-index].vnfcs.vnfc_length'\r
+ value='0' />\r
+ </set>\r
+ </outcome>\r
+ </switch>\r
+ <set>\r
+ <parameter name='dest-vnfc-index'\r
+ value='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-sub-interface-groups.vnf-sub-interface-group[$vsig-index].vnfcs.vnfc_length`' />\r
+ </set>\r
+ <for index='src-vnfc-index' start='0'\r
+ end='`$tmp.vlan-vnfc-instance-groups.vlan-vnfc-instance-group[$vvig-index].vnfcs.vnfc_length`' >\r
+ <block atomic="true">\r
+ <set>\r
+ <parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-sub-interface-groups.vnf-sub-interface-group[$vsig-index].vnfcs.vnfc[$dest-vnfc-index].vnfc-name'\r
+ value='`$tmp.vlan-vnfc-instance-groups.vlan-vnfc-instance-group[$vvig-index].vnfcs.vnfc[$src-vnfc-index].vnfc-name`' />\r
+ </set>\r
+ <save plugin="org.onap.ccsdk.sli.adaptors.aai.AAIService"\r
+ resource="custom-query"\r
+ key="format = 'resource'"\r
+ force="true"\r
+ local-only="false"\r
+ pfx="tmp.aai.interfaces">\r
+ <parameter name="start[0]" value="`'/network/vnfcs/vnfc/' + $tmp.vlan-vnfc-instance-groups.vlan-vnfc-instance-group[$vvig-index].vnfcs.vnfc[$src-vnfc-index].vnfc-name`" />\r
+ <parameter name="start_length" value="1" />\r
+ <parameter name="query" value="`'/query/vserver-l-interfaces-fromVnfc?networkName=' + $network-name`" />\r
+ <outcome value='failure'>\r
+ <return status='failure'>\r
+ <parameter name='error-code' value='500' />\r
+ <parameter name='error-message' value="`'Failed to get interface data for network name '\r
+ + $network-name\r
+ + ' and vnfc '\r
+ + $tmp.vlan-vnfc-instance-groups.vlan-vnfc-instance-group[$vvig-index].vnfcs.vnfc[$src-vnfc-index].vnfc-name`" />\r
+ </return>\r
+ </outcome>\r
+ <outcome value='not-found'>\r
+ <block></block>\r
+ </outcome>\r
+ <outcome value='success'>\r
+ <block>\r
+ <for silentFailure='true' index='idx1' start='0' end='`$tmp.aai.interfaces.results_length`' >\r
+ <switch test='`$tmp.aai.interfaces.results[$idx1].vserver.vserver-id`'>\r
+ <outcome value=''>\r
+ <block></block>\r
+ </outcome>\r
+ <outcome value='Other'>\r
+ <block>\r
+ <set>\r
+ <parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-sub-interface-groups.vnf-sub-interface-group[$vsig-index].vnfcs.vnfc[$dest-vnfc-index].vserver-id'\r
+ value='`$tmp.aai.interfaces.results[$idx1].vserver.vserver-id`' />\r
+ <parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-sub-interface-groups.vnf-sub-interface-group[$vsig-index].vnfcs.vnfc[$dest-vnfc-index].vserver-name'\r
+ value='`$tmp.aai.interfaces.results[$idx1].vserver.vserver-name`' />\r
+ </set>\r
+ <set>\r
+ <parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-sub-interface-groups.vnf-sub-interface-group[$vsig-index].vnfcs.vnfc[$dest-vnfc-index].vnics.vnic_length'\r
+ value='`$tmp.aai.interfaces.results[$idx1].vserver.l-interfaces.l-interface_length`' />\r
+ </set>\r
+ <for silentFailure='true' index='int-index' start='0'\r
+ end='`$tmp.aai.interfaces.results[$idx1].vserver.l-interfaces.l-interface_length`' >\r
+ <block>\r
+ <set>\r
+ <parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-sub-interface-groups.vnf-sub-interface-group[$vsig-index].vnfcs.vnfc[$dest-vnfc-index].vnics.vnic[$int-index].vnic-port-id'\r
+ value='`$tmp.aai.interfaces.results[$idx1].vserver.l-interfaces.l-interface[$int-index].interface-id`' />\r
+ <parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-sub-interface-groups.vnf-sub-interface-group[$vsig-index].vnfcs.vnfc[$dest-vnfc-index].vnics.vnic[$int-index].vnic-port-name'\r
+ value='`$tmp.aai.interfaces.results[$idx1].vserver.l-interfaces.l-interface[$int-index].interface-name`' />\r
+ </set>\r
+ <for silentFailure='true' index='idx2' start='0' end='`$tmp.aai.interfaces.results_length`' >\r
+ <switch test='`$tmp.aai.interfaces.results[$idx2].l-interface.interface-id\r
+ == $tmp.aai.interfaces.results[$idx1].vserver.l-interfaces.l-interface[$int-index].interface-id`'>\r
+ <outcome value='true'>\r
+ <block>\r
+ <switch test='`$tmp.aai.interfaces.results[$idx2].l-interface.l-interfaces.l-interface_length`'>\r
+ <outcome value=''>\r
+ <block></block>\r
+ </outcome>\r
+ <outcome value='Other'>\r
+ <set>\r
+ <parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-sub-interface-groups.vnf-sub-interface-group[$vsig-index].vnfcs.vnfc[$dest-vnfc-index].vnics.vnic[$int-index].sub-interfaces.sub-interface_length'\r
+ value='`$tmp.aai.interfaces.results[$idx2].l-interface.l-interfaces.l-interface_length`' />\r
+ </set>\r
+ </outcome>\r
+ </switch>\r
+ <for silentFailure='true' index='sub-int-index' start='0'\r
+ end='`$tmp.aai.interfaces.results[$idx2].l-interface.l-interfaces.l-interface_length`' >\r
+ <block>\r
+ <set>\r
+ <parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-sub-interface-groups.vnf-sub-interface-group[$vsig-index].vnfcs.vnfc[$dest-vnfc-index].vnics.vnic[$int-index].sub-interfaces.sub-interface[$sub-int-index].sub-interface-port-id'\r
+ value='`$tmp.aai.interfaces.results[$idx2].l-interface.l-interfaces.l-interface[$sub-int-index].interface-id`' />\r
+ <parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-sub-interface-groups.vnf-sub-interface-group[$vsig-index].vnfcs.vnfc[$dest-vnfc-index].vnics.vnic[$int-index].sub-interfaces.sub-interface[$sub-int-index].sub-interface-port-name'\r
+ value='`$tmp.aai.interfaces.results[$idx2].l-interface.l-interfaces.l-interface[$sub-int-index].interface-name`' />\r
+ </set>\r
+ <for silentFailure='true' index='idx3' start='0' end='`$tmp.aai.interfaces.results_length`' >\r
+ <switch test='`$tmp.aai.interfaces.results[$idx3].l-interface.interface-id\r
+ == $tmp.aai.interfaces.results[$idx2].l-interface.l-interfaces.l-interface[$sub-int-index].interface-id`'>\r
+ <outcome value='true'>\r
+ <switch test='`$tmp.aai.interfaces.results[$idx3].l-interface.vlans.vlan[0].vlan-interface`'>\r
+ <outcome value=''>\r
+ <block></block>\r
+ </outcome>\r
+ <outcome value='Other'>\r
+ <for silentFailure='true' index='idx4' start='0' end='`$tmp.aai.interfaces.results_length`' >\r
+ <switch test='`$tmp.aai.interfaces.results[$idx4].vlan.vlan-interface\r
+ == $tmp.aai.interfaces.results[$idx3].l-interface.vlans.vlan[0].vlan-interface`'>\r
+ <outcome value='true'>\r
+ <block>\r
+ <switch test='`$tmp.aai.interfaces.results[$idx4].vlan.vlan-id-outer`'>\r
+ <outcome value=''>\r
+ <block></block>\r
+ </outcome>\r
+ <outcome value='Other'>\r
+ <set>\r
+ <parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-sub-interface-groups.vnf-sub-interface-group[$vsig-index].vnfcs.vnfc[$dest-vnfc-index].vnics.vnic[$int-index].sub-interfaces.sub-interface[$sub-int-index].vlan-tags.upper-tag-id'\r
+ value='`$tmp.aai.interfaces.results[$idx4].vlan.vlan-id-outer`' />\r
+ </set>\r
+ </outcome>\r
+ </switch>\r
+ <switch test='`$tmp.aai.interfaces.results[$idx4].vlan.vlan-id-inner`'>\r
+ <outcome value=''>\r
+ <block></block>\r
+ </outcome>\r
+ <outcome value='Other'>\r
+ <set>\r
+ <parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-sub-interface-groups.vnf-sub-interface-group[$vsig-index].vnfcs.vnfc[$dest-vnfc-index].vnics.vnic[$int-index].sub-interfaces.sub-interface[$sub-int-index].vlan-tags.lower-tag-id'\r
+ value='`$tmp.aai.interfaces.results[$idx4].vlan.vlan-id-inner`' />\r
+ </set>\r
+ </outcome>\r
+ </switch>\r
+ </block>\r
+ </outcome>\r
+ </switch>\r
+ </for>\r
+ </outcome>\r
+ </switch>\r
+ </outcome>\r
+ </switch>\r
+ </for>\r
+ </block>\r
+ </for>\r
+ </block>\r
+ </outcome>\r
+ </switch>\r
+ </for>\r
+ </block>\r
+ </for>\r
+ </block>\r
+ </outcome>\r
+ </switch>\r
+ </for>\r
+ <set>\r
+ <parameter name='dest-vnfc-index' value='`$dest-vnfc-index + 1`' />\r
+ </set>\r
+ </block>\r
+ </outcome>\r
+ </save>\r
+ </block>\r
+ </for>\r
+ <set>\r
+ <parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-sub-interface-groups.vnf-sub-interface-group[$vsig-index].vnfcs.vnfc_length'\r
+ value='`$dest-vnfc-index`' />\r
+ </set>\r
+ </block>\r
+ </outcome>\r
+ </switch>\r
+ </for>\r
+ <return status='success'>\r
+ <parameter name='' value='' />\r
+ </return>\r
+ </block>\r
+ </method>\r
+</service-logic>
\ No newline at end of file